Merge pull request #3920 from ingmargoudt/master

some cleanups, fix thorncaster sliver
This commit is contained in:
ingmargoudt 2017-09-02 13:04:34 +02:00 committed by GitHub
commit 577cf8711e
9 changed files with 30 additions and 59 deletions

View file

@ -27,8 +27,6 @@
*/
package mage.cards.c;
import java.util.Iterator;
import java.util.UUID;
import mage.abilities.Ability;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.effects.ContinuousEffectImpl;
@ -46,6 +44,9 @@ import mage.game.stack.Spell;
import mage.game.stack.StackObject;
import mage.players.Player;
import java.util.Iterator;
import java.util.UUID;
/**
* @author magenoxx_at_gmail.com
@ -118,13 +119,7 @@ class GainReboundEffect extends ContinuousEffectImpl {
private void addReboundAbility(Card card, Ability source, Game game) {
if (CastThroughTime.filter.match(card, game)) {
boolean found = false;
for (Ability ability : card.getAbilities()) {
if (ability instanceof ReboundAbility) {
found = true;
break;
}
}
boolean found = card.getAbilities().stream().anyMatch(ability -> ability instanceof ReboundAbility);
if (!found) {
Ability ability = new ReboundAbility();
game.getState().addOtherAbility(card, ability);

View file

@ -27,7 +27,6 @@
*/
package mage.cards.t;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.DelayedTriggeredAbility;
@ -41,14 +40,7 @@ import mage.abilities.keyword.ReboundAbility;
import mage.cards.Card;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.Layer;
import mage.constants.Outcome;
import mage.constants.SubLayer;
import mage.constants.SubType;
import mage.constants.SuperType;
import mage.constants.Zone;
import mage.constants.*;
import mage.filter.FilterSpell;
import mage.filter.FilterStackObject;
import mage.filter.predicate.Predicates;
@ -61,6 +53,8 @@ import mage.players.Player;
import mage.target.targetpointer.FixedTarget;
import mage.watchers.common.AttackedThisTurnWatcher;
import java.util.UUID;
/**
*
* @author spjspj
@ -187,13 +181,7 @@ class TaigamOjutaiMasterGainReboundEffect extends ContinuousEffectImpl {
}
private void addReboundAbility(Card card, Ability source, Game game) {
boolean found = false;
for (Ability ability : card.getAbilities()) {
if (ability instanceof ReboundAbility) {
found = true;
break;
}
}
boolean found = card.getAbilities().stream().anyMatch(ability -> ability instanceof ReboundAbility);
if (!found) {
Ability ability = new ReboundAbility();
game.getState().addOtherAbility(card, ability);

View file

@ -27,13 +27,12 @@
*/
package mage.cards.t;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.AttacksTriggeredAbility;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.effects.common.DamageTargetEffect;
import mage.abilities.effects.common.continuous.GainAbilityAllEffect;
import mage.abilities.effects.common.continuous.GainAbilityControlledEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
@ -42,8 +41,9 @@ import mage.constants.Zone;
import mage.filter.StaticFilters;
import mage.target.common.TargetCreatureOrPlayer;
import java.util.UUID;
/**
*
* @author LevelX2
*/
public class ThorncasterSliver extends CardImpl {
@ -59,9 +59,9 @@ public class ThorncasterSliver extends CardImpl {
Ability ability = new AttacksTriggeredAbility(new DamageTargetEffect(1), false);
ability.addTarget(new TargetCreatureOrPlayer());
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD,
new GainAbilityAllEffect(ability,
Duration.WhileOnBattlefield, StaticFilters.FILTER_PERMANENT_CREATURE_SLIVERS,
"Sliver creatures you control have \"Whenever this creature attacks, it deals 1 damage to target creature or player.\"")));
new GainAbilityControlledEffect(ability,
Duration.WhileOnBattlefield, StaticFilters.FILTER_PERMANENT_CREATURE_SLIVERS)
.setText("Sliver creatures you control have \"Whenever this creature attacks, it deals 1 damage to target creature or player.\"")));
}
public ThorncasterSliver(final ThorncasterSliver card) {

View file

@ -46,7 +46,7 @@ public enum BuybackCondition implements Condition {
if (card != null) {
return card.getAbilities().stream()
.filter(a -> a instanceof BuybackAbility)
.anyMatch(b -> ((BuybackAbility) b).isActivated());
.anyMatch(Ability::isActivated);
}
return false;
}

View file

@ -52,21 +52,12 @@ public enum SuspendedCondition implements Condition {
@Override
public boolean apply(Game game, Ability source) {
Card card = game.getCard(source.getSourceId());
boolean found = false;
if (card != null) {
for (Ability ability: card.getAbilities()) {
if (ability instanceof SuspendAbility) {
found = true;
break;
}
}
boolean found = card.getAbilities().stream().anyMatch(ability -> ability instanceof SuspendAbility);
if (!found) {
for (Ability ability: game.getState().getAllOtherAbilities(source.getSourceId())) {
if (ability instanceof SuspendAbility) {
found = true;
break;
}
}
found = game.getState().getAllOtherAbilities(source.getSourceId()).stream().anyMatch(ability -> ability instanceof SuspendAbility);
}
if (found) {
if (game.getState().getZone(card.getId()) == Zone.EXILED &&

View file

@ -62,7 +62,7 @@ public class XorLessLifeCondition implements Condition {
}
break;
case CONTROLLER:
conditionApplies |= game.getPlayer(source.getControllerId()).getLife() <= amount;
conditionApplies = game.getPlayer(source.getControllerId()).getLife() <= amount;
break;
case TARGET_OPPONENT:
//TODO: Implement this.
@ -78,7 +78,7 @@ public class XorLessLifeCondition implements Condition {
}
}
}
conditionApplies |= maxLife <= amount;
conditionApplies = maxLife <= amount;
break;
}

View file

@ -78,6 +78,7 @@ public class ContinuousEffectsList<T extends ContinuousEffect> extends ArrayList
}
public void removeEndOfCombatEffects() {
for (Iterator<T> i = this.iterator(); i.hasNext(); ) {
T entry = i.next();
if (entry.getDuration() == Duration.EndOfCombat) {

View file

@ -27,15 +27,16 @@
*/
package mage.players;
import java.io.Serializable;
import java.util.*;
import java.util.stream.Collectors;
import mage.cards.Card;
import mage.constants.Zone;
import mage.filter.FilterCard;
import mage.game.Game;
import mage.util.RandomUtil;
import java.io.Serializable;
import java.util.*;
import java.util.stream.Collectors;
/**
* @author BetaSteward_at_googlemail.com
*/
@ -138,9 +139,7 @@ public class Library implements Serializable {
public void putOnBottom(Card card, Game game) {
if (card.getOwnerId().equals(playerId)) {
card.setZone(Zone.LIBRARY, game);
if (library.contains(card.getId())) {
library.remove(card.getId());
}
library.remove(card.getId());
library.add(card.getId());
} else {
game.getPlayer(card.getOwnerId()).getLibrary().putOnBottom(card, game);

View file

@ -27,11 +27,6 @@
*/
package mage.watchers.common;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import java.util.UUID;
import mage.constants.WatcherScope;
import mage.constants.Zone;
import mage.game.Game;
@ -39,6 +34,8 @@ import mage.game.events.GameEvent;
import mage.game.stack.Spell;
import mage.watchers.Watcher;
import java.util.*;
/**
*
* @author LevelX2
@ -66,7 +63,7 @@ public class CastFromGraveyardWatcher extends Watcher {
if (event.getType() == GameEvent.EventType.SPELL_CAST && event.getZone() == Zone.GRAVEYARD) {
Spell spell = (Spell) game.getObject(event.getTargetId());
if (spell != null) {
HashSet<Integer> zcc = spellsCastFromGraveyard.computeIfAbsent(spell.getSourceId(), k -> new HashSet<>());
Set<Integer> zcc = spellsCastFromGraveyard.computeIfAbsent(spell.getSourceId(), k -> new HashSet<>());
zcc.add(spell.getZoneChangeCounter(game));
}