1
0
Fork 0
mirror of https://github.com/correl/mage.git synced 2025-04-12 09:11:05 -09:00

* Deals damage to player - fixed that some cards deals combat damage instead non-combat;

This commit is contained in:
Oleg Agafonov 2020-01-14 08:53:09 +04:00
parent 846200c093
commit 76387057b7
47 changed files with 217 additions and 292 deletions

View file

@ -1,13 +1,6 @@
package mage.player.ai; package mage.player.ai;
import java.io.Serializable; import mage.abilities.*;
import java.util.*;
import mage.abilities.Ability;
import mage.abilities.ActivatedAbility;
import mage.abilities.Mode;
import mage.abilities.Modes;
import mage.abilities.TriggeredAbility;
import mage.abilities.common.PassAbility; import mage.abilities.common.PassAbility;
import mage.abilities.costs.mana.GenericManaCost; import mage.abilities.costs.mana.GenericManaCost;
import mage.cards.Card; import mage.cards.Card;
@ -26,8 +19,10 @@ import mage.target.TargetCard;
import mage.util.RandomUtil; import mage.util.RandomUtil;
import org.apache.log4j.Logger; import org.apache.log4j.Logger;
import java.io.Serializable;
import java.util.*;
/** /**
*
* plays randomly * plays randomly
* *
* @author BetaSteward_at_googlemail.com * @author BetaSteward_at_googlemail.com
@ -428,7 +423,7 @@ public class SimulatedPlayerMCTS extends MCTSPlayer {
} else { } else {
Player player = game.getPlayer(targetId); Player player = game.getPlayer(targetId);
if (player != null) { if (player != null) {
player.damage(amount, sourceId, game, false, true); player.damage(amount, sourceId, game);
remainingDamage -= amount; remainingDamage -= amount;
} }
} }

View file

@ -1,8 +1,5 @@
package mage.cards.a; package mage.cards.a;
import java.util.List;
import java.util.UUID;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.OneShotEffect;
import mage.cards.CardImpl; import mage.cards.CardImpl;
@ -14,14 +11,16 @@ import mage.game.Game;
import mage.game.permanent.Permanent; import mage.game.permanent.Permanent;
import mage.players.Player; import mage.players.Player;
import java.util.List;
import java.util.UUID;
/** /**
*
* @author Backfir3 * @author Backfir3
*/ */
public final class AcidicSoil extends CardImpl { public final class AcidicSoil extends CardImpl {
public AcidicSoil(UUID ownerId, CardSetInfo setInfo) { public AcidicSoil(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{R}"); super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{R}");
//Acidic Soil deals damage to each player equal to the number of lands they control. //Acidic Soil deals damage to each player equal to the number of lands they control.
@ -62,7 +61,7 @@ class AcidicSoilEffect extends OneShotEffect {
} }
} }
if (amount > 0) { if (amount > 0) {
player.damage(amount, source.getSourceId(), game, false, true); player.damage(amount, source.getSourceId(), game);
} }
} }
} }

View file

@ -1,7 +1,5 @@
package mage.cards.a; package mage.cards.a;
import java.util.UUID;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.Mode; import mage.abilities.Mode;
import mage.abilities.common.BeginningOfUpkeepTriggeredAbility; import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
@ -16,14 +14,15 @@ import mage.filter.common.FilterControlledArtifactPermanent;
import mage.game.Game; import mage.game.Game;
import mage.players.Player; import mage.players.Player;
import java.util.UUID;
/** /**
*
* @author fireshoes * @author fireshoes
*/ */
public final class AncientRunes extends CardImpl { public final class AncientRunes extends CardImpl {
public AncientRunes(UUID ownerId, CardSetInfo setInfo) { public AncientRunes(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{R}"); super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{R}");
// At the beginning of each player's upkeep, Ancient Runes deals damage to that player equal to the number of artifacts they control. // At the beginning of each player's upkeep, Ancient Runes deals damage to that player equal to the number of artifacts they control.
this.addAbility(new BeginningOfUpkeepTriggeredAbility(Zone.BATTLEFIELD, new AncientRunesDamageTargetEffect(), TargetController.ANY, false, true)); this.addAbility(new BeginningOfUpkeepTriggeredAbility(Zone.BATTLEFIELD, new AncientRunesDamageTargetEffect(), TargetController.ANY, false, true));
@ -39,18 +38,16 @@ public final class AncientRunes extends CardImpl {
} }
} }
class AncientRunesDamageTargetEffect extends OneShotEffect{ class AncientRunesDamageTargetEffect extends OneShotEffect {
public AncientRunesDamageTargetEffect() public AncientRunesDamageTargetEffect() {
{
super(Outcome.Damage); super(Outcome.Damage);
} }
public AncientRunesDamageTargetEffect(AncientRunesDamageTargetEffect copy) public AncientRunesDamageTargetEffect(AncientRunesDamageTargetEffect copy) {
{
super(copy); super(copy);
} }
@Override @Override
public String getText(Mode mode) { public String getText(Mode mode) {
return "{this} deals damage to that player equal to the number of artifacts they control"; return "{this} deals damage to that player equal to the number of artifacts they control";
@ -61,7 +58,7 @@ class AncientRunesDamageTargetEffect extends OneShotEffect{
Player player = game.getPlayer(targetPointer.getFirst(game, source)); Player player = game.getPlayer(targetPointer.getFirst(game, source));
if (player != null) { if (player != null) {
int damage = game.getBattlefield().getAllActivePermanents(new FilterControlledArtifactPermanent("artifacts"), targetPointer.getFirst(game, source), game).size(); int damage = game.getBattlefield().getAllActivePermanents(new FilterControlledArtifactPermanent("artifacts"), targetPointer.getFirst(game, source), game).size();
player.damage(damage, source.getSourceId(), game, false, true); player.damage(damage, source.getSourceId(), game);
return true; return true;
} }
return false; return false;

View file

@ -1,8 +1,5 @@
package mage.cards.a; package mage.cards.a;
import java.io.ObjectStreamException;
import java.util.UUID;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.effects.Effect; import mage.abilities.effects.Effect;
import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.OneShotEffect;
@ -18,8 +15,10 @@ import mage.players.Player;
import mage.target.Target; import mage.target.Target;
import mage.target.common.TargetAnyTarget; import mage.target.common.TargetAnyTarget;
import java.io.ObjectStreamException;
import java.util.UUID;
/** /**
*
* @author maurer.it_at_gmail.com * @author maurer.it_at_gmail.com
*/ */
public final class ArcTrail extends CardImpl { public final class ArcTrail extends CardImpl {
@ -91,7 +90,7 @@ class ArcTrailEffect extends OneShotEffect {
} }
Player player = game.getPlayer(target.getFirstTarget()); Player player = game.getPlayer(target.getFirstTarget());
if (player != null) { if (player != null) {
applied |= (player.damage(damage, source.getSourceId(), game, false, true) > 0); applied |= (player.damage(damage, source.getSourceId(), game) > 0);
} }
twoDamageDone = true; twoDamageDone = true;

View file

@ -1,7 +1,5 @@
package mage.cards.a; package mage.cards.a;
import java.util.UUID;
import mage.MageInt; import mage.MageInt;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.common.OnEventTriggeredAbility; import mage.abilities.common.OnEventTriggeredAbility;
@ -21,8 +19,9 @@ import mage.game.permanent.Permanent;
import mage.players.Player; import mage.players.Player;
import mage.target.common.TargetControlledPermanent; import mage.target.common.TargetControlledPermanent;
import java.util.UUID;
/** /**
*
* @author anonymous * @author anonymous
*/ */
public final class ArchdemonOfGreed extends CardImpl { public final class ArchdemonOfGreed extends CardImpl {
@ -35,7 +34,7 @@ public final class ArchdemonOfGreed extends CardImpl {
} }
public ArchdemonOfGreed(UUID ownerId, CardSetInfo setInfo) { public ArchdemonOfGreed(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},""); super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "");
this.subtype.add(SubType.DEMON); this.subtype.add(SubType.DEMON);
this.color.setBlack(true); this.color.setBlack(true);
@ -93,10 +92,9 @@ public final class ArchdemonOfGreed extends CardImpl {
// sacrifice the chosen card // sacrifice the chosen card
return humanSacrifice.sacrifice(source.getSourceId(), game); return humanSacrifice.sacrifice(source.getSourceId(), game);
} }
} } else {
else {
permanent.tap(game); permanent.tap(game);
player.damage(9, source.getSourceId(), game, false, true); player.damage(9, source.getSourceId(), game);
} }
} }
return true; return true;

View file

@ -1,7 +1,5 @@
package mage.cards.b; package mage.cards.b;
import java.util.UUID;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.TriggeredAbilityImpl; import mage.abilities.TriggeredAbilityImpl;
import mage.abilities.common.AsEntersBattlefieldAbility; import mage.abilities.common.AsEntersBattlefieldAbility;
@ -17,14 +15,15 @@ import mage.game.events.GameEvent;
import mage.game.events.GameEvent.EventType; import mage.game.events.GameEvent.EventType;
import mage.players.Player; import mage.players.Player;
import java.util.UUID;
/** /**
*
* @author dustinconrad * @author dustinconrad
*/ */
public final class BlackVise extends CardImpl { public final class BlackVise extends CardImpl {
public BlackVise(UUID ownerId, CardSetInfo setInfo) { public BlackVise(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{1}"); super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{1}");
// As Black Vise enters the battlefield, choose an opponent. // As Black Vise enters the battlefield, choose an opponent.
this.addAbility(new AsEntersBattlefieldAbility(new ChooseOpponentEffect(Outcome.Detriment))); this.addAbility(new AsEntersBattlefieldAbility(new ChooseOpponentEffect(Outcome.Detriment)));
@ -96,7 +95,7 @@ class BlackViseEffect extends OneShotEffect {
if (chosenPlayer != null) { if (chosenPlayer != null) {
int damage = chosenPlayer.getHand().size() - 4; int damage = chosenPlayer.getHand().size() - 4;
if (damage > 0) { if (damage > 0) {
chosenPlayer.damage(damage, source.getSourceId(), game, false, true); chosenPlayer.damage(damage, source.getSourceId(), game);
} }
return true; return true;
} }

View file

@ -1,7 +1,5 @@
package mage.cards.b; package mage.cards.b;
import java.util.UUID;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.OneShotEffect;
import mage.cards.Card; import mage.cards.Card;
@ -15,8 +13,9 @@ import mage.players.Player;
import mage.target.common.TargetAnyTarget; import mage.target.common.TargetAnyTarget;
import mage.target.common.TargetDiscard; import mage.target.common.TargetDiscard;
import java.util.UUID;
/** /**
*
* @author LevelX2 * @author LevelX2
*/ */
public final class BlastOfGenius extends CardImpl { public final class BlastOfGenius extends CardImpl {
@ -75,7 +74,7 @@ class BlastOfGeniusEffect extends OneShotEffect {
} }
Player targetPlayer = game.getPlayer(this.getTargetPointer().getFirst(game, source)); Player targetPlayer = game.getPlayer(this.getTargetPointer().getFirst(game, source));
if (targetPlayer != null) { if (targetPlayer != null) {
targetPlayer.damage(damage, source.getSourceId(), game, false, true); targetPlayer.damage(damage, source.getSourceId(), game);
return true; return true;
} }
} }

View file

@ -1,7 +1,5 @@
package mage.cards.b; package mage.cards.b;
import java.util.UUID;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.OneShotEffect;
import mage.cards.CardImpl; import mage.cards.CardImpl;
@ -13,14 +11,15 @@ import mage.game.permanent.Permanent;
import mage.players.Player; import mage.players.Player;
import mage.target.common.TargetCreaturePermanent; import mage.target.common.TargetCreaturePermanent;
import java.util.UUID;
/** /**
*
* @author cbt33 * @author cbt33
*/ */
public final class BlazingSalvo extends CardImpl { public final class BlazingSalvo extends CardImpl {
public BlazingSalvo(UUID ownerId, CardSetInfo setInfo) { public BlazingSalvo(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{R}"); super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{R}");
// Blazing Salvo deals 3 damage to target creature unless that creature's controller has Blazing Salvo deal 5 damage to them. // Blazing Salvo deals 3 damage to target creature unless that creature's controller has Blazing Salvo deal 5 damage to them.
this.getSpellAbility().addTarget(new TargetCreaturePermanent()); this.getSpellAbility().addTarget(new TargetCreaturePermanent());
@ -61,9 +60,9 @@ class BlazingSalvoEffect extends OneShotEffect {
if (player != null) { if (player != null) {
String message = "Have Blazing Salvo do 5 damage to you?"; String message = "Have Blazing Salvo do 5 damage to you?";
if (player.chooseUse(Outcome.Damage, message, source, game)) { if (player.chooseUse(Outcome.Damage, message, source, game)) {
player.damage(5, source.getSourceId(), game, false, true); player.damage(5, source.getSourceId(), game);
} else { } else {
permanent.damage(3, source.getSourceId(), game, false, true); permanent.damage(3, source.getSourceId(), game);
} }
return true; return true;
} }

View file

@ -1,4 +1,3 @@
package mage.cards.b; package mage.cards.b;
import mage.abilities.Ability; import mage.abilities.Ability;
@ -9,11 +8,14 @@ import mage.abilities.costs.CostImpl;
import mage.abilities.costs.common.TapSourceCost; import mage.abilities.costs.common.TapSourceCost;
import mage.abilities.costs.mana.GenericManaCost; import mage.abilities.costs.mana.GenericManaCost;
import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.combat.CantBeBlockedByCreaturesAttachedEffect;
import mage.abilities.effects.common.continuous.GainAbilityAttachedEffect; import mage.abilities.effects.common.continuous.GainAbilityAttachedEffect;
import mage.abilities.keyword.EquipAbility; import mage.abilities.keyword.EquipAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.*; import mage.constants.*;
import mage.filter.common.FilterCreaturePermanent;
import mage.filter.predicate.Predicates;
import mage.game.Game; import mage.game.Game;
import mage.game.permanent.Permanent; import mage.game.permanent.Permanent;
import mage.players.Player; import mage.players.Player;
@ -21,22 +23,19 @@ import mage.target.common.TargetAnyTarget;
import java.util.List; import java.util.List;
import java.util.UUID; import java.util.UUID;
import mage.abilities.effects.common.combat.CantBeBlockedByCreaturesAttachedEffect;
import mage.filter.common.FilterCreaturePermanent;
import mage.filter.predicate.Predicates;
/** /**
*
* @author North * @author North
*/ */
public final class BlazingTorch extends CardImpl { public final class BlazingTorch extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Vampires or Zombies"); private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Vampires or Zombies");
static { static {
filter.add(Predicates.or(SubType.VAMPIRE.getPredicate(), filter.add(Predicates.or(SubType.VAMPIRE.getPredicate(),
SubType.ZOMBIE.getPredicate())); SubType.ZOMBIE.getPredicate()));
} }
public BlazingTorch(UUID ownerId, CardSetInfo setInfo) { public BlazingTorch(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{1}"); super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{1}");
this.subtype.add(SubType.EQUIPMENT); this.subtype.add(SubType.EQUIPMENT);
@ -45,13 +44,13 @@ public final class BlazingTorch extends CardImpl {
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD,
new CantBeBlockedByCreaturesAttachedEffect(Duration.WhileOnBattlefield, filter, AttachmentType.EQUIPMENT))); new CantBeBlockedByCreaturesAttachedEffect(Duration.WhileOnBattlefield, filter, AttachmentType.EQUIPMENT)));
// Equipped creature has "{tap}, Sacrifice Blazing Torch: Blazing Torch deals 2 damage to any target.") // Equipped creature has "{tap}, Sacrifice Blazing Torch: Blazing Torch deals 2 damage to any target.")
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new BlazingTorchDamageEffect(), new TapSourceCost()); Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new BlazingTorchDamageEffect(), new TapSourceCost());
ability.addCost(new BlazingTorchCost()); ability.addCost(new BlazingTorchCost());
ability.addTarget(new TargetAnyTarget()); ability.addTarget(new TargetAnyTarget());
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAttachedEffect(ability, AttachmentType.EQUIPMENT))); this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAttachedEffect(ability, AttachmentType.EQUIPMENT)));
// Equip {1} // Equip {1}
this.addAbility(new EquipAbility(Outcome.BoostCreature, new GenericManaCost(1))); this.addAbility(new EquipAbility(Outcome.BoostCreature, new GenericManaCost(1)));
} }
@ -129,7 +128,7 @@ class BlazingTorchDamageEffect extends OneShotEffect {
} }
Player player = game.getPlayer(targetPointer.getFirst(game, source)); Player player = game.getPlayer(targetPointer.getFirst(game, source));
if (player != null && sourceId != null) { if (player != null && sourceId != null) {
player.damage(2, sourceId, game, false, true); player.damage(2, sourceId, game);
return true; return true;
} }
return false; return false;

View file

@ -1,7 +1,5 @@
package mage.cards.b; package mage.cards.b;
import java.util.UUID;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.OneShotEffect;
@ -15,11 +13,11 @@ import mage.filter.common.FilterCreaturePermanent;
import mage.game.Game; import mage.game.Game;
import mage.game.permanent.Permanent; import mage.game.permanent.Permanent;
import mage.players.Player; import mage.players.Player;
import mage.target.TargetPlayer;
import mage.target.common.TargetPlayerOrPlaneswalker; import mage.target.common.TargetPlayerOrPlaneswalker;
import java.util.UUID;
/** /**
*
* @author noxx * @author noxx
*/ */
public final class BonfireOfTheDamned extends CardImpl { public final class BonfireOfTheDamned extends CardImpl {
@ -64,9 +62,9 @@ class BonfireOfTheDamnedEffect extends OneShotEffect {
if (player != null) { if (player != null) {
int damage = source.getManaCostsToPay().getX(); int damage = source.getManaCostsToPay().getX();
if (damage > 0) { if (damage > 0) {
player.damage(damage, source.getSourceId(), game, false, true); player.damage(damage, source.getSourceId(), game);
for (Permanent perm : game.getBattlefield().getAllActivePermanents(filter, player.getId(), game)) { for (Permanent perm : game.getBattlefield().getAllActivePermanents(filter, player.getId(), game)) {
perm.damage(damage, source.getSourceId(), game, false, true); perm.damage(damage, source.getSourceId(), game);
} }
} }
return true; return true;

View file

@ -1,7 +1,5 @@
package mage.cards.b; package mage.cards.b;
import java.util.UUID;
import mage.MageObject; import mage.MageObject;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.OneShotEffect;
@ -14,14 +12,15 @@ import mage.game.Game;
import mage.players.Player; import mage.players.Player;
import mage.target.TargetPlayer; import mage.target.TargetPlayer;
import java.util.UUID;
/** /**
*
* @author tomd1990 * @author tomd1990
*/ */
public final class BookBurning extends CardImpl { public final class BookBurning extends CardImpl {
public BookBurning(UUID ownerId, CardSetInfo setInfo) { public BookBurning(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{R}"); super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{1}{R}");
// Any player may have Book Burning deal 6 damage to them. If no one does, target player puts the top six cards of their library into their graveyard. // Any player may have Book Burning deal 6 damage to them. If no one does, target player puts the top six cards of their library into their graveyard.
this.getSpellAbility().addEffect(new BookBurningMillEffect()); this.getSpellAbility().addEffect(new BookBurningMillEffect());
@ -63,7 +62,7 @@ class BookBurningMillEffect extends OneShotEffect {
Player player = game.getPlayer(playerId); Player player = game.getPlayer(playerId);
if (player != null && player.chooseUse(Outcome.Detriment, "Have " + sourceObject.getLogName() + " deal 6 damage to you?", source, game)) { if (player != null && player.chooseUse(Outcome.Detriment, "Have " + sourceObject.getLogName() + " deal 6 damage to you?", source, game)) {
millCards = false; millCards = false;
player.damage(6, source.getSourceId(), game, false, true); player.damage(6, source.getSourceId(), game);
game.informPlayers(player.getLogName() + " has " + sourceObject.getLogName() + " deal 6 damage to them"); game.informPlayers(player.getLogName() + " has " + sourceObject.getLogName() + " deal 6 damage to them");
} }
} }

View file

@ -1,7 +1,5 @@
package mage.cards.b; package mage.cards.b;
import java.util.UUID;
import mage.MageInt; import mage.MageInt;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.common.DealtDamageToSourceTriggeredAbility; import mage.abilities.common.DealtDamageToSourceTriggeredAbility;
@ -18,8 +16,9 @@ import mage.game.permanent.Permanent;
import mage.players.Player; import mage.players.Player;
import mage.target.common.TargetAnyTarget; import mage.target.common.TargetAnyTarget;
import java.util.UUID;
/** /**
*
* @author LevelX2 * @author LevelX2
*/ */
public final class BorosReckoner extends CardImpl { public final class BorosReckoner extends CardImpl {
@ -73,7 +72,7 @@ class BorosReckonerDealDamageEffect extends OneShotEffect {
if (amount > 0) { if (amount > 0) {
Player player = game.getPlayer(targetPointer.getFirst(game, source)); Player player = game.getPlayer(targetPointer.getFirst(game, source));
if (player != null) { if (player != null) {
player.damage(amount, source.getSourceId(), game, false, true); player.damage(amount, source.getSourceId(), game);
return true; return true;
} }
Permanent creature = game.getPermanent(targetPointer.getFirst(game, source)); Permanent creature = game.getPermanent(targetPointer.getFirst(game, source));

View file

@ -1,22 +1,22 @@
package mage.cards.b; package mage.cards.b;
import java.util.UUID;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.OneShotEffect;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.Outcome; import mage.constants.Outcome;
import static mage.filter.StaticFilters.FILTER_PERMANENT_CREATURES;
import mage.game.Game; import mage.game.Game;
import mage.game.permanent.Permanent; import mage.game.permanent.Permanent;
import mage.game.stack.Spell; import mage.game.stack.Spell;
import mage.game.stack.StackObject; import mage.game.stack.StackObject;
import mage.players.Player; import mage.players.Player;
import java.util.UUID;
import static mage.filter.StaticFilters.FILTER_PERMANENT_CREATURES;
/** /**
*
* @author ilcartographer * @author ilcartographer
*/ */
public final class BreakingPoint extends CardImpl { public final class BreakingPoint extends CardImpl {
@ -73,7 +73,7 @@ class BreakingPointDestroyEffect extends OneShotEffect {
Player player = game.getPlayer(playerId); Player player = game.getPlayer(playerId);
if (player != null && player.chooseUse(Outcome.Detriment, "Have " + spell.getLogName() + " deal 6 damage to you?", source, game)) { if (player != null && player.chooseUse(Outcome.Detriment, "Have " + spell.getLogName() + " deal 6 damage to you?", source, game)) {
destroyCreatures = false; destroyCreatures = false;
player.damage(6, source.getSourceId(), game, false, true); player.damage(6, source.getSourceId(), game);
game.informPlayers(player.getLogName() + " has " + spell.getName() + " deal 6 to them"); game.informPlayers(player.getLogName() + " has " + spell.getName() + " deal 6 to them");
} }
} }

View file

@ -1,8 +1,5 @@
package mage.cards.b; package mage.cards.b;
import java.util.UUID;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.OneShotEffect;
import mage.cards.CardImpl; import mage.cards.CardImpl;
@ -15,6 +12,8 @@ import mage.game.stack.StackObject;
import mage.players.Player; import mage.players.Player;
import mage.target.TargetPlayer; import mage.target.TargetPlayer;
import java.util.UUID;
/** /**
* @author dustinconrad * @author dustinconrad
*/ */
@ -72,7 +71,7 @@ class BrowbeatDrawEffect extends OneShotEffect {
Player player = game.getPlayer(playerId); Player player = game.getPlayer(playerId);
if (player != null && player.chooseUse(Outcome.Detriment, "Have " + spell.getLogName() + " deal 5 damage to you?", source, game)) { if (player != null && player.chooseUse(Outcome.Detriment, "Have " + spell.getLogName() + " deal 5 damage to you?", source, game)) {
drawCards = false; drawCards = false;
player.damage(5, source.getSourceId(), game, false, true); player.damage(5, source.getSourceId(), game);
game.informPlayers(player.getLogName() + " has " + spell.getLogName() + " deal 5 to them"); game.informPlayers(player.getLogName() + " has " + spell.getLogName() + " deal 5 to them");
} }
} }

View file

@ -1,4 +1,3 @@
package mage.cards.b; package mage.cards.b;
import mage.abilities.Ability; import mage.abilities.Ability;
@ -93,7 +92,7 @@ class BuildersBaneEffect extends OneShotEffect {
for (Map.Entry<UUID, Integer> entry : destroyedArtifactPerPlayer.entrySet()) { for (Map.Entry<UUID, Integer> entry : destroyedArtifactPerPlayer.entrySet()) {
Player player = game.getPlayer(entry.getKey()); Player player = game.getPlayer(entry.getKey());
if (player != null) { if (player != null) {
player.damage(entry.getValue(), source.getSourceId(), game, false, true); player.damage(entry.getValue(), source.getSourceId(), game);
} }
} }

View file

@ -1,7 +1,5 @@
package mage.cards.b; package mage.cards.b;
import java.util.UUID;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.costs.common.TapVariableTargetCost; import mage.abilities.costs.common.TapVariableTargetCost;
import mage.abilities.dynamicvalue.common.GetXValue; import mage.abilities.dynamicvalue.common.GetXValue;
@ -18,8 +16,9 @@ import mage.game.permanent.Permanent;
import mage.players.Player; import mage.players.Player;
import mage.target.common.TargetAnyTarget; import mage.target.common.TargetAnyTarget;
import java.util.UUID;
/** /**
*
* @author North * @author North
*/ */
public final class BurnAtTheStake extends CardImpl { public final class BurnAtTheStake extends CardImpl {
@ -31,7 +30,7 @@ public final class BurnAtTheStake extends CardImpl {
} }
public BurnAtTheStake(UUID ownerId, CardSetInfo setInfo) { public BurnAtTheStake(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{R}{R}{R}"); super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{R}{R}{R}");
// As an additional cost to cast Burn at the Stake, tap any number of untapped creatures you control. // As an additional cost to cast Burn at the Stake, tap any number of untapped creatures you control.
@ -79,7 +78,7 @@ class BurnAtTheStakeEffect extends OneShotEffect {
Player player = game.getPlayer(targetPointer.getFirst(game, source)); Player player = game.getPlayer(targetPointer.getFirst(game, source));
if (player != null) { if (player != null) {
player.damage(amount, source.getSourceId(), game, false, true); player.damage(amount, source.getSourceId(), game);
return true; return true;
} }

View file

@ -1,7 +1,5 @@
package mage.cards.b; package mage.cards.b;
import java.util.UUID;
import mage.MageObjectReference; import mage.MageObjectReference;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.effects.ContinuousEffect; import mage.abilities.effects.ContinuousEffect;
@ -20,8 +18,9 @@ import mage.players.Player;
import mage.target.common.TargetAnyTarget; import mage.target.common.TargetAnyTarget;
import mage.target.targetpointer.FixedTarget; import mage.target.targetpointer.FixedTarget;
import java.util.UUID;
/** /**
*
* @author fireshoes * @author fireshoes
*/ */
public final class BurnFromWithin extends CardImpl { public final class BurnFromWithin extends CardImpl {
@ -80,7 +79,7 @@ class BurnFromWithinEffect extends OneShotEffect {
} }
Player targetPlayer = game.getPlayer(this.getTargetPointer().getFirst(game, source)); Player targetPlayer = game.getPlayer(this.getTargetPointer().getFirst(game, source));
if (targetPlayer != null) { if (targetPlayer != null) {
targetPlayer.damage(amount, source.getSourceId(), game, false, true); targetPlayer.damage(amount, source.getSourceId(), game);
return true; return true;
} }
} }

View file

@ -1,7 +1,5 @@
package mage.cards.c; package mage.cards.c;
import java.util.UUID;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.common.SagaAbility; import mage.abilities.common.SagaAbility;
import mage.abilities.effects.Effects; import mage.abilities.effects.Effects;
@ -9,20 +7,17 @@ import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.common.CreateTokenEffect;
import mage.abilities.effects.common.DamagePlayersEffect; import mage.abilities.effects.common.DamagePlayersEffect;
import mage.abilities.effects.common.GainLifeEffect; import mage.abilities.effects.common.GainLifeEffect;
import mage.constants.SubType;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.*;
import mage.constants.Outcome;
import mage.constants.SagaChapter;
import mage.constants.TargetController;
import mage.game.Game; import mage.game.Game;
import mage.game.permanent.Permanent; import mage.game.permanent.Permanent;
import mage.game.permanent.token.ChainersTormentNightmareToken; import mage.game.permanent.token.ChainersTormentNightmareToken;
import mage.players.Player; import mage.players.Player;
import java.util.UUID;
/** /**
*
* @author TheElk801 * @author TheElk801
*/ */
public final class ChainersTorment extends CardImpl { public final class ChainersTorment extends CardImpl {
@ -84,7 +79,7 @@ class ChainersTormentEffect extends OneShotEffect {
for (UUID tokenId : effect.getLastAddedTokenIds()) { for (UUID tokenId : effect.getLastAddedTokenIds()) {
Permanent token = game.getPermanentOrLKIBattlefield(tokenId); Permanent token = game.getPermanentOrLKIBattlefield(tokenId);
if (token != null) { if (token != null) {
player.damage(xValue, tokenId, game, false, true); player.damage(xValue, tokenId, game);
} }
} }
} }

View file

@ -1,7 +1,5 @@
package mage.cards.c; package mage.cards.c;
import java.util.UUID;
import mage.ObjectColor; import mage.ObjectColor;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.OneShotEffect;
@ -16,20 +14,21 @@ import mage.game.Game;
import mage.players.Player; import mage.players.Player;
import mage.target.TargetPlayer; import mage.target.TargetPlayer;
import java.util.UUID;
/** /**
*
* @author jeffwadsworth * @author jeffwadsworth
*/ */
public final class ChaoticBacklash extends CardImpl { public final class ChaoticBacklash extends CardImpl {
public ChaoticBacklash(UUID ownerId, CardSetInfo setInfo) { public ChaoticBacklash(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{4}{R}"); super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{4}{R}");
// Chaotic Backlash deals damage to target player equal to twice the number of white and/or blue permanents they control. // Chaotic Backlash deals damage to target player equal to twice the number of white and/or blue permanents they control.
this.getSpellAbility().addEffect(new ChaoticBacklashEffect()); this.getSpellAbility().addEffect(new ChaoticBacklashEffect());
this.getSpellAbility().addTarget(new TargetPlayer()); this.getSpellAbility().addTarget(new TargetPlayer());
} }
public ChaoticBacklash(final ChaoticBacklash card) { public ChaoticBacklash(final ChaoticBacklash card) {
@ -43,9 +42,9 @@ public final class ChaoticBacklash extends CardImpl {
} }
class ChaoticBacklashEffect extends OneShotEffect { class ChaoticBacklashEffect extends OneShotEffect {
private static final FilterPermanent filter = new FilterPermanent("white and/or blue permanents they control"); private static final FilterPermanent filter = new FilterPermanent("white and/or blue permanents they control");
static { static {
filter.add(Predicates.or( filter.add(Predicates.or(
new ColorPredicate(ObjectColor.WHITE), new ColorPredicate(ObjectColor.WHITE),
@ -71,7 +70,7 @@ class ChaoticBacklashEffect extends OneShotEffect {
Player targetPlayer = game.getPlayer(source.getFirstTarget()); Player targetPlayer = game.getPlayer(source.getFirstTarget());
if (targetPlayer != null) { if (targetPlayer != null) {
int amount = 2 * game.getBattlefield().countAll(filter, targetPlayer.getId(), game); int amount = 2 * game.getBattlefield().countAll(filter, targetPlayer.getId(), game);
targetPlayer.damage(amount, source.getSourceId(), game, false, true); targetPlayer.damage(amount, source.getSourceId(), game);
return true; return true;
} }
return false; return false;

View file

@ -1,7 +1,5 @@
package mage.cards.c; package mage.cards.c;
import java.util.UUID;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.DestroyTargetEffect; import mage.abilities.effects.common.DestroyTargetEffect;
@ -18,25 +16,26 @@ import mage.game.permanent.Permanent;
import mage.players.Player; import mage.players.Player;
import mage.target.common.TargetLandPermanent; import mage.target.common.TargetLandPermanent;
import java.util.UUID;
/** /**
*
* @author fireshoes * @author fireshoes
*/ */
public final class ChokingSands extends CardImpl { public final class ChokingSands extends CardImpl {
private static final FilterLandPermanent filter = new FilterLandPermanent("non-Swamp land"); private static final FilterLandPermanent filter = new FilterLandPermanent("non-Swamp land");
static { static {
filter.add(Predicates.not(SubType.SWAMP.getPredicate())); filter.add(Predicates.not(SubType.SWAMP.getPredicate()));
} }
public ChokingSands(UUID ownerId, CardSetInfo setInfo) { public ChokingSands(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{B}{B}"); super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{1}{B}{B}");
// Destroy target non-Swamp land. // Destroy target non-Swamp land.
this.getSpellAbility().addEffect(new DestroyTargetEffect()); this.getSpellAbility().addEffect(new DestroyTargetEffect());
this.getSpellAbility().addTarget(new TargetLandPermanent(filter)); this.getSpellAbility().addTarget(new TargetLandPermanent(filter));
// If that land was nonbasic, Choking Sands deals 2 damage to the land's controller. // If that land was nonbasic, Choking Sands deals 2 damage to the land's controller.
this.getSpellAbility().addEffect(new ChokingSandsEffect()); this.getSpellAbility().addEffect(new ChokingSandsEffect());
} }
@ -73,7 +72,7 @@ class ChokingSandsEffect extends OneShotEffect {
if (permanent != null && !permanent.isBasic()) { if (permanent != null && !permanent.isBasic()) {
Player player = game.getPlayer(permanent.getControllerId()); Player player = game.getPlayer(permanent.getControllerId());
if (player != null) { if (player != null) {
player.damage(2, source.getSourceId(), game, false, true); player.damage(2, source.getSourceId(), game);
return true; return true;
} }
} }

View file

@ -1,7 +1,5 @@
package mage.cards.c; package mage.cards.c;
import java.util.Set;
import java.util.UUID;
import mage.MageInt; import mage.MageInt;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.common.EntersBattlefieldTriggeredAbility;
@ -12,16 +10,18 @@ import mage.cards.Card;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.Outcome; import mage.constants.Outcome;
import mage.constants.SubType;
import mage.constants.Zone; import mage.constants.Zone;
import mage.game.Game; import mage.game.Game;
import mage.game.permanent.Permanent; import mage.game.permanent.Permanent;
import mage.players.Player; import mage.players.Player;
import mage.target.common.TargetOpponent; import mage.target.common.TargetOpponent;
import java.util.Set;
import java.util.UUID;
/** /**
*
* @author spjspj * @author spjspj
*/ */
public final class CombustibleGearhulk extends CardImpl { public final class CombustibleGearhulk extends CardImpl {
@ -117,7 +117,7 @@ class CombustibleGearhulkMillAndDamageEffect extends OneShotEffect {
controller.moveCards(cardList, Zone.GRAVEYARD, source, game); controller.moveCards(cardList, Zone.GRAVEYARD, source, game);
Player targetPlayer = game.getPlayer(targetPointer.getFirst(game, source)); Player targetPlayer = game.getPlayer(targetPointer.getFirst(game, source));
if (targetPlayer != null) { if (targetPlayer != null) {
targetPlayer.damage(sumCMC, source.getSourceId(), game, false, true); targetPlayer.damage(sumCMC, source.getSourceId(), game);
return true; return true;
} }
} }

View file

@ -1,7 +1,5 @@
package mage.cards.c; package mage.cards.c;
import java.util.UUID;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.OneShotEffect;
import mage.cards.CardImpl; import mage.cards.CardImpl;
@ -16,8 +14,9 @@ import mage.players.Player;
import mage.target.Target; import mage.target.Target;
import mage.target.common.TargetAnyTarget; import mage.target.common.TargetAnyTarget;
import java.util.UUID;
/** /**
*
* @author Quercitron * @author Quercitron
*/ */
public final class ConeOfFlame extends CardImpl { public final class ConeOfFlame extends CardImpl {
@ -89,7 +88,7 @@ class ConeOfFlameEffect extends OneShotEffect {
} }
Player player = game.getPlayer(target.getFirstTarget()); Player player = game.getPlayer(target.getFirstTarget());
if (player != null) { if (player != null) {
applied |= (player.damage(damage, source.getSourceId(), game, false, true) > 0); applied |= (player.damage(damage, source.getSourceId(), game) > 0);
} }
damage++; damage++;
} }

View file

@ -1,7 +1,5 @@
package mage.cards.c; package mage.cards.c;
import java.util.UUID;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.common.BeginningOfUpkeepTriggeredAbility; import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
import mage.abilities.common.SimpleStaticAbility; import mage.abilities.common.SimpleStaticAbility;
@ -11,26 +9,22 @@ import mage.abilities.effects.common.AttachEffect;
import mage.abilities.effects.common.DestroyTargetEffect; import mage.abilities.effects.common.DestroyTargetEffect;
import mage.abilities.effects.common.continuous.BoostEnchantedEffect; import mage.abilities.effects.common.continuous.BoostEnchantedEffect;
import mage.abilities.effects.common.counter.AddCountersAttachedEffect; import mage.abilities.effects.common.counter.AddCountersAttachedEffect;
import mage.constants.Outcome;
import mage.target.TargetPermanent;
import mage.abilities.keyword.EnchantAbility; import mage.abilities.keyword.EnchantAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.*;
import mage.constants.Duration;
import mage.constants.SubType;
import mage.constants.TargetController;
import mage.constants.Zone;
import mage.counters.CounterType; import mage.counters.CounterType;
import mage.filter.common.FilterCreaturePermanent; import mage.filter.common.FilterCreaturePermanent;
import mage.filter.predicate.Predicates; import mage.filter.predicate.Predicates;
import mage.game.Game; import mage.game.Game;
import mage.game.permanent.Permanent; import mage.game.permanent.Permanent;
import mage.players.Player; import mage.players.Player;
import mage.target.TargetPermanent;
import mage.target.targetpointer.FixedTarget; import mage.target.targetpointer.FixedTarget;
import java.util.UUID;
/** /**
*
* @author TheElk801 * @author TheElk801
*/ */
public final class ConsumingFerocity extends CardImpl { public final class ConsumingFerocity extends CardImpl {
@ -95,7 +89,7 @@ class ConsumingFerocityEffect extends OneShotEffect {
if (creature.getCounters(game).getCount(CounterType.P1P0) > 2) { if (creature.getCounters(game).getCount(CounterType.P1P0) > 2) {
Player player = game.getPlayer(creature.getControllerId()); Player player = game.getPlayer(creature.getControllerId());
if (player != null) { if (player != null) {
player.damage(creature.getPower().getValue(), creature.getId(), game, false, true); player.damage(creature.getPower().getValue(), creature.getId(), game);
} }
effect = new DestroyTargetEffect(true); effect = new DestroyTargetEffect(true);
effect.setTargetPointer(new FixedTarget(creature, game)); effect.setTargetPointer(new FixedTarget(creature, game));

View file

@ -1,8 +1,5 @@
package mage.cards.c; package mage.cards.c;
import java.util.UUID;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.OneShotEffect;
import mage.cards.CardImpl; import mage.cards.CardImpl;
@ -17,14 +14,15 @@ import mage.game.permanent.Permanent;
import mage.players.Player; import mage.players.Player;
import mage.target.common.TargetAnyTarget; import mage.target.common.TargetAnyTarget;
import java.util.UUID;
/** /**
*
* @author BetaSteward_at_googlemail.com * @author BetaSteward_at_googlemail.com
*/ */
public final class Corrupt extends CardImpl { public final class Corrupt extends CardImpl {
public Corrupt(UUID ownerId, CardSetInfo setInfo) { public Corrupt(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{5}{B}"); super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{5}{B}");
// Corrupt deals damage to any target equal to the number of Swamps you control. You gain life equal to the damage dealt this way. // Corrupt deals damage to any target equal to the number of Swamps you control. You gain life equal to the damage dealt this way.
this.getSpellAbility().addTarget(new TargetAnyTarget()); this.getSpellAbility().addTarget(new TargetAnyTarget());
@ -68,13 +66,11 @@ class CorruptEffect extends OneShotEffect {
Permanent permanent = game.getPermanent(source.getFirstTarget()); Permanent permanent = game.getPermanent(source.getFirstTarget());
if (permanent != null) { if (permanent != null) {
damageDealt = permanent.damage(amount, source.getSourceId(), game, false, true); damageDealt = permanent.damage(amount, source.getSourceId(), game, false, true);
} } else {
else {
Player player = game.getPlayer(source.getFirstTarget()); Player player = game.getPlayer(source.getFirstTarget());
if (player != null) { if (player != null) {
damageDealt = player.damage(amount, source.getSourceId(), game, false, true); damageDealt = player.damage(amount, source.getSourceId(), game);
} } else
else
return false; return false;
} }
Player you = game.getPlayer(source.getControllerId()); Player you = game.getPlayer(source.getControllerId());

View file

@ -78,7 +78,7 @@ class CursedScrollEffect extends OneShotEffect {
} }
Player player = game.getPlayer(targetPointer.getFirst(game, source)); Player player = game.getPlayer(targetPointer.getFirst(game, source));
if (player != null) { if (player != null) {
player.damage(2, source.getSourceId(), game, false, true); player.damage(2, source.getSourceId(), game);
return true; return true;
} }
return false; return false;

View file

@ -1,7 +1,5 @@
package mage.cards.f; package mage.cards.f;
import java.util.UUID;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.OneShotEffect;
import mage.abilities.keyword.FlyingAbility; import mage.abilities.keyword.FlyingAbility;
@ -16,14 +14,15 @@ import mage.game.Game;
import mage.game.permanent.Permanent; import mage.game.permanent.Permanent;
import mage.players.Player; import mage.players.Player;
import java.util.UUID;
/** /**
*
* @author fireshoes * @author fireshoes
*/ */
public final class FaultLine extends CardImpl { public final class FaultLine extends CardImpl {
public FaultLine(UUID ownerId, CardSetInfo setInfo) { public FaultLine(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{X}{R}{R}"); super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{X}{R}{R}");
// Fault Line deals X damage to each creature without flying and each player. // Fault Line deals X damage to each creature without flying and each player.
this.getSpellAbility().addEffect(new FaultLineEffect()); this.getSpellAbility().addEffect(new FaultLineEffect());
@ -64,13 +63,13 @@ class FaultLineEffect extends OneShotEffect {
@Override @Override
public boolean apply(Game game, Ability source) { public boolean apply(Game game, Ability source) {
int amount = source.getManaCostsToPay().getX(); int amount = source.getManaCostsToPay().getX();
for (Permanent permanent: game.getBattlefield().getActivePermanents(filter, source.getControllerId(), game)) { for (Permanent permanent : game.getBattlefield().getActivePermanents(filter, source.getControllerId(), game)) {
permanent.damage(amount, source.getSourceId(), game, false, true); permanent.damage(amount, source.getSourceId(), game, false, true);
} }
for (UUID playerId: game.getState().getPlayersInRange(source.getControllerId(), game)) { for (UUID playerId : game.getState().getPlayersInRange(source.getControllerId(), game)) {
Player player = game.getPlayer(playerId); Player player = game.getPlayer(playerId);
if (player != null) if (player != null)
player.damage(amount, source.getSourceId(), game, false, true); player.damage(amount, source.getSourceId(), game);
} }
return true; return true;
} }

View file

@ -1,42 +1,30 @@
package mage.cards.f; package mage.cards.f;
import java.util.UUID;
import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
import mage.abilities.dynamicvalue.DynamicValue;
import mage.abilities.effects.Effect;
import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.ChooseOpponentEffect;
import mage.abilities.effects.common.DamageTargetEffect;
import mage.abilities.effects.common.counter.AddCountersSourceEffect;
import mage.cards.Card;
import mage.constants.*;
import mage.counters.Counter;
import mage.counters.CounterType;
import mage.filter.common.FilterCreatureCard;
import mage.filter.predicate.mageobject.ConvertedManaCostPredicate;
import mage.game.Game;
import mage.game.permanent.Permanent;
import mage.players.Player;
import mage.target.common.TargetCardInHand;
import mage.target.common.TargetCreaturePermanent;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.AttachEffect; import mage.abilities.effects.common.AttachEffect;
import mage.target.TargetPermanent; import mage.abilities.effects.common.counter.AddCountersSourceEffect;
import mage.abilities.keyword.EnchantAbility; import mage.abilities.keyword.EnchantAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.*;
import mage.counters.CounterType;
import mage.game.Game;
import mage.players.Player;
import mage.target.TargetPermanent;
import mage.target.common.TargetCreaturePermanent;
import java.util.UUID;
/** /**
*
* @author ciaccona007 * @author ciaccona007
*/ */
public final class FesteringWound extends CardImpl { public final class FesteringWound extends CardImpl {
public FesteringWound(UUID ownerId, CardSetInfo setInfo) { public FesteringWound(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{B}"); super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{B}");
this.subtype.add(SubType.AURA); this.subtype.add(SubType.AURA);
// Enchant creature // Enchant creature
@ -61,6 +49,7 @@ public final class FesteringWound extends CardImpl {
return new FesteringWound(this); return new FesteringWound(this);
} }
} }
class FesteringWoundEffect extends OneShotEffect { class FesteringWoundEffect extends OneShotEffect {
public FesteringWoundEffect() { public FesteringWoundEffect() {
@ -83,8 +72,8 @@ class FesteringWoundEffect extends OneShotEffect {
int amount = game.getPermanent(sourceId).getCounters(game).getCount(CounterType.INFECTION); int amount = game.getPermanent(sourceId).getCounters(game).getCount(CounterType.INFECTION);
UUID id = this.getTargetPointer().getFirst(game, source); UUID id = this.getTargetPointer().getFirst(game, source);
Player player = game.getPlayer(id); Player player = game.getPlayer(id);
if(player != null) { if (player != null) {
player.damage(amount, source.getSourceId(), game, false, true); player.damage(amount, source.getSourceId(), game);
return true; return true;
} }
return false; return false;

View file

@ -1,7 +1,5 @@
package mage.cards.f; package mage.cards.f;
import java.util.UUID;
import mage.MageInt; import mage.MageInt;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.common.DealtDamageToSourceTriggeredAbility; import mage.abilities.common.DealtDamageToSourceTriggeredAbility;
@ -13,16 +11,13 @@ import mage.abilities.effects.common.DamageControllerEffect;
import mage.abilities.effects.common.continuous.BoostSourceEffect; import mage.abilities.effects.common.continuous.BoostSourceEffect;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.*;
import mage.constants.SubType;
import mage.constants.Duration;
import mage.constants.Outcome;
import mage.constants.Zone;
import mage.game.Game; import mage.game.Game;
import mage.players.Player; import mage.players.Player;
import java.util.UUID;
/** /**
*
* @author LevelX2 * @author LevelX2
*/ */
public final class FiredrinkerSatyr extends CardImpl { public final class FiredrinkerSatyr extends CardImpl {
@ -77,7 +72,7 @@ class FiredrinkerSatyrDealDamageEffect extends OneShotEffect {
if (amount > 0) { if (amount > 0) {
Player player = game.getPlayer(source.getControllerId()); Player player = game.getPlayer(source.getControllerId());
if (player != null) { if (player != null) {
player.damage(amount, source.getSourceId(), game, false, true); player.damage(amount, source.getSourceId(), game);
return true; return true;
} }
} }

View file

@ -1,6 +1,5 @@
package mage.cards.f; package mage.cards.f;
import java.util.UUID;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.costs.common.DiscardXTargetCost; import mage.abilities.costs.common.DiscardXTargetCost;
import mage.abilities.dynamicvalue.common.GetXValue; import mage.abilities.dynamicvalue.common.GetXValue;
@ -17,8 +16,9 @@ import mage.target.Target;
import mage.target.common.TargetAnyTarget; import mage.target.common.TargetAnyTarget;
import mage.target.targetadjustment.TargetAdjuster; import mage.target.targetadjustment.TargetAdjuster;
import java.util.UUID;
/** /**
*
* @author jeffwadsworth * @author jeffwadsworth
*/ */
public final class Firestorm extends CardImpl { public final class Firestorm extends CardImpl {
@ -80,7 +80,7 @@ class FirestormEffect extends OneShotEffect {
} else { } else {
Player player = game.getPlayer(targetId); Player player = game.getPlayer(targetId);
if (player != null) { if (player != null) {
player.damage(amount, source.getSourceId(), game, false, true); player.damage(amount, source.getSourceId(), game);
} }
} }
} }

View file

@ -1,7 +1,5 @@
package mage.cards.g; package mage.cards.g;
import java.util.UUID;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.Mode; import mage.abilities.Mode;
import mage.abilities.effects.Effect; import mage.abilities.effects.Effect;
@ -23,10 +21,10 @@ import mage.target.common.TargetAnyTarget;
import mage.target.common.TargetControlledCreaturePermanent; import mage.target.common.TargetControlledCreaturePermanent;
import mage.target.common.TargetCreaturePermanent; import mage.target.common.TargetCreaturePermanent;
import java.util.UUID;
/** /**
*
* @author LoneFox * @author LoneFox
*
*/ */
public final class GrabTheReins extends CardImpl { public final class GrabTheReins extends CardImpl {
@ -104,7 +102,7 @@ class GrabTheReinsEffect extends OneShotEffect {
} }
player = game.getPlayer(source.getFirstTarget()); player = game.getPlayer(source.getFirstTarget());
if (player != null) { if (player != null) {
player.damage(amount, source.getSourceId(), game, false, true); player.damage(amount, source.getSourceId(), game);
return true; return true;
} }
} else { } else {

View file

@ -1,7 +1,5 @@
package mage.cards.i; package mage.cards.i;
import java.util.UUID;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.OneShotEffect;
import mage.cards.CardImpl; import mage.cards.CardImpl;
@ -13,14 +11,15 @@ import mage.game.Game;
import mage.game.permanent.Permanent; import mage.game.permanent.Permanent;
import mage.players.Player; import mage.players.Player;
import java.util.UUID;
/** /**
*
* @author LevelX2 * @author LevelX2
*/ */
public final class InciteRebellion extends CardImpl { public final class InciteRebellion extends CardImpl {
public InciteRebellion(UUID ownerId, CardSetInfo setInfo) { public InciteRebellion(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{4}{R}{R}"); super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{4}{R}{R}");
// For each player, Incite Rebellion deals damage to that player and each creature that player controls equal to the number of creatures they control. // For each player, Incite Rebellion deals damage to that player and each creature that player controls equal to the number of creatures they control.
@ -59,16 +58,16 @@ class InciteRebellionEffect extends OneShotEffect {
public boolean apply(Game game, Ability source) { public boolean apply(Game game, Ability source) {
Player controller = game.getPlayer(source.getControllerId()); Player controller = game.getPlayer(source.getControllerId());
if (controller != null) { if (controller != null) {
for (UUID playerId: game.getState().getPlayersInRange(controller.getId(), game)) { for (UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) {
Player player = game.getPlayer(playerId); Player player = game.getPlayer(playerId);
if (player != null) { if (player != null) {
int count = game.getBattlefield().countAll(filter, playerId, game); int count = game.getBattlefield().countAll(filter, playerId, game);
if (count > 0) { if (count > 0) {
player.damage(count, source.getSourceId(), game, false, true); player.damage(count, source.getSourceId(), game);
for (Permanent permanent: game.getBattlefield().getAllActivePermanents(filter, playerId, game)) { for (Permanent permanent : game.getBattlefield().getAllActivePermanents(filter, playerId, game)) {
permanent.damage(count, source.getSourceId(), game, false, true); permanent.damage(count, source.getSourceId(), game);
} }
} }
} }
} }
return true; return true;

View file

@ -1,7 +1,5 @@
package mage.cards.i; package mage.cards.i;
import java.util.UUID;
import mage.MageObject; import mage.MageObject;
import mage.ObjectColor; import mage.ObjectColor;
import mage.abilities.Ability; import mage.abilities.Ability;
@ -17,8 +15,9 @@ import mage.game.Game;
import mage.players.Player; import mage.players.Player;
import mage.target.TargetPlayer; import mage.target.TargetPlayer;
import java.util.UUID;
/** /**
*
* @author jeffwadsworth & L_J * @author jeffwadsworth & L_J
*/ */
public final class Inquisition extends CardImpl { public final class Inquisition extends CardImpl {
@ -42,9 +41,10 @@ public final class Inquisition extends CardImpl {
} }
class InquisitionEffect extends OneShotEffect { class InquisitionEffect extends OneShotEffect {
private static final FilterCard filter = new FilterCard(); private static final FilterCard filter = new FilterCard();
static{
static {
filter.add(new ColorPredicate(ObjectColor.WHITE)); filter.add(new ColorPredicate(ObjectColor.WHITE));
} }
@ -72,7 +72,7 @@ class InquisitionEffect extends OneShotEffect {
} }
} }
if (cardsFound > 0) { if (cardsFound > 0) {
targetPlayer.damage(cardsFound, source.getSourceId(), game, false, true); targetPlayer.damage(cardsFound, source.getSourceId(), game);
} }
return true; return true;
} }

View file

@ -1,7 +1,5 @@
package mage.cards.i; package mage.cards.i;
import java.util.UUID;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.Mode; import mage.abilities.Mode;
import mage.abilities.common.BeginningOfUpkeepTriggeredAbility; import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
@ -14,8 +12,9 @@ import mage.constants.TargetController;
import mage.game.Game; import mage.game.Game;
import mage.players.Player; import mage.players.Player;
import java.util.UUID;
/** /**
*
* @author Plopman * @author Plopman
*/ */
public final class IronMaiden extends CardImpl { public final class IronMaiden extends CardImpl {
@ -55,7 +54,7 @@ class IronMaidenEffect extends OneShotEffect {
if (player != null) { if (player != null) {
int amount = player.getHand().size() - 4; int amount = player.getHand().size() - 4;
if (amount > 0) { if (amount > 0) {
player.damage(amount, source.getSourceId(), game, false, true); player.damage(amount, source.getSourceId(), game);
return true; return true;
} }
} }

View file

@ -1,14 +1,12 @@
package mage.cards.l; package mage.cards.l;
import java.util.UUID;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.OneShotEffect;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.Outcome; import mage.constants.Outcome;
import mage.constants.SubType;
import mage.constants.TargetController; import mage.constants.TargetController;
import mage.filter.FilterPermanent; import mage.filter.FilterPermanent;
import mage.game.Game; import mage.game.Game;
@ -18,8 +16,9 @@ import mage.target.Target;
import mage.target.TargetPermanent; import mage.target.TargetPermanent;
import mage.target.common.TargetPlayerOrPlaneswalker; import mage.target.common.TargetPlayerOrPlaneswalker;
import java.util.UUID;
/** /**
*
* @author L_J * @author L_J
*/ */
public final class Landslide extends CardImpl { public final class Landslide extends CardImpl {
@ -79,7 +78,7 @@ class LandslideEffect extends OneShotEffect {
} }
Player player = game.getPlayer(source.getFirstTarget()); Player player = game.getPlayer(source.getFirstTarget());
if (player != null) { if (player != null) {
player.damage(amount, source.getSourceId(), game, false, true); player.damage(amount, source.getSourceId(), game);
} }
} }
return true; return true;

View file

@ -1,7 +1,5 @@
package mage.cards.l; package mage.cards.l;
import java.util.UUID;
import mage.MageInt; import mage.MageInt;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.common.BeginningOfUpkeepTriggeredAbility; import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
@ -19,14 +17,15 @@ import mage.players.Player;
import mage.target.Target; import mage.target.Target;
import mage.target.common.TargetControlledCreaturePermanent; import mage.target.common.TargetControlledCreaturePermanent;
import java.util.UUID;
/** /**
*
* @author dustinconrad * @author dustinconrad
*/ */
public final class LordOfThePit extends CardImpl { public final class LordOfThePit extends CardImpl {
public LordOfThePit(UUID ownerId, CardSetInfo setInfo) { public LordOfThePit(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{B}{B}{B}"); super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{B}{B}{B}");
this.subtype.add(SubType.DEMON); this.subtype.add(SubType.DEMON);
this.power = new MageInt(7); this.power = new MageInt(7);
@ -89,7 +88,7 @@ class LordOfThePitEffect extends OneShotEffect {
return true; return true;
} }
} else { } else {
player.damage(7, source.getSourceId(), game, false, true); player.damage(7, source.getSourceId(), game);
return true; return true;
} }
return false; return false;

View file

@ -80,6 +80,6 @@ class MalignantGrowthEffect extends OneShotEffect {
if (counters == 0) { if (counters == 0) {
return true; return true;
} }
return player.damage(player.drawCards(counters, game), source.getSourceId(), game) > 0; return player.damage(player.drawCards(counters, game), source.getSourceId(), game, false, true) > 0;
} }
} }

View file

@ -1,6 +1,5 @@
package mage.cards.m; package mage.cards.m;
import java.util.UUID;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.effects.Effect; import mage.abilities.effects.Effect;
import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.OneShotEffect;
@ -17,8 +16,9 @@ import mage.game.Game;
import mage.players.Player; import mage.players.Player;
import mage.target.common.TargetOpponent; import mage.target.common.TargetOpponent;
import java.util.UUID;
/** /**
*
* @author jeffwadsworth * @author jeffwadsworth
*/ */
public final class Misfortune extends CardImpl { public final class Misfortune extends CardImpl {
@ -79,7 +79,7 @@ class MisfortuneEffect extends OneShotEffect {
Effect putM1M1CounterOnEachOpponentCreature = new AddCountersAllEffect( Effect putM1M1CounterOnEachOpponentCreature = new AddCountersAllEffect(
CounterType.M1M1.createInstance(), filterOpponentCreatures); CounterType.M1M1.createInstance(), filterOpponentCreatures);
putM1M1CounterOnEachOpponentCreature.apply(game, source); putM1M1CounterOnEachOpponentCreature.apply(game, source);
chosenOpponent.damage(4, source.getSourceId(), game); chosenOpponent.damage(4, source.getSourceId(), game, false, true);
} }
return true; return true;
} }

View file

@ -1,8 +1,5 @@
package mage.cards.m; package mage.cards.m;
import java.util.Optional;
import java.util.UUID;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.common.SimpleStaticAbility; import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.condition.common.KickedCondition; import mage.abilities.condition.common.KickedCondition;
@ -25,18 +22,20 @@ import mage.game.events.GameEvent;
import mage.game.permanent.Permanent; import mage.game.permanent.Permanent;
import mage.players.Player; import mage.players.Player;
import java.util.Optional;
import java.util.UUID;
/** /**
*
* @author LevelX2 * @author LevelX2
*/ */
public final class MoltenDisaster extends CardImpl { public final class MoltenDisaster extends CardImpl {
public MoltenDisaster(UUID ownerId, CardSetInfo setInfo) { public MoltenDisaster(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{X}{R}{R}"); super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{X}{R}{R}");
// If Molten Disaster was kicked, it has split second. // If Molten Disaster was kicked, it has split second.
Ability ability = new SimpleStaticAbility(Zone.STACK, new MoltenDisasterSplitSecondEffect()); Ability ability = new SimpleStaticAbility(Zone.STACK, new MoltenDisasterSplitSecondEffect());
ability.setRuleAtTheTop(true); ability.setRuleAtTheTop(true);
this.addAbility(ability); this.addAbility(ability);
// Kicker {R} // Kicker {R}
@ -59,7 +58,7 @@ class MoltenDisasterSplitSecondEffect extends ContinuousRuleModifyingEffectImpl
MoltenDisasterSplitSecondEffect() { MoltenDisasterSplitSecondEffect() {
super(Duration.WhileOnStack, Outcome.Detriment); super(Duration.WhileOnStack, Outcome.Detriment);
staticText ="if this spell was kicked, it has split second <i>(As long as this spell is on the stack, players can't cast spells or activate abilities that aren't mana abilities.)</i>"; staticText = "if this spell was kicked, it has split second <i>(As long as this spell is on the stack, players can't cast spells or activate abilities that aren't mana abilities.)</i>";
} }
MoltenDisasterSplitSecondEffect(final MoltenDisasterSplitSecondEffect effect) { MoltenDisasterSplitSecondEffect(final MoltenDisasterSplitSecondEffect effect) {
@ -70,12 +69,12 @@ class MoltenDisasterSplitSecondEffect extends ContinuousRuleModifyingEffectImpl
public String getInfoMessage(Ability source, GameEvent event, Game game) { public String getInfoMessage(Ability source, GameEvent event, Game game) {
return "You can't cast spells or activate abilities that aren't mana abilities (Split second)."; return "You can't cast spells or activate abilities that aren't mana abilities (Split second).";
} }
@Override @Override
public boolean checksEventType(GameEvent event, Game game) { public boolean checksEventType(GameEvent event, Game game) {
return event.getType() == GameEvent.EventType.CAST_SPELL || event.getType() == GameEvent.EventType.ACTIVATE_ABILITY; return event.getType() == GameEvent.EventType.CAST_SPELL || event.getType() == GameEvent.EventType.ACTIVATE_ABILITY;
} }
@Override @Override
public boolean applies(GameEvent event, Ability source, Game game) { public boolean applies(GameEvent event, Ability source, Game game) {
if (event.getType() == GameEvent.EventType.CAST_SPELL) { if (event.getType() == GameEvent.EventType.CAST_SPELL) {
@ -86,9 +85,7 @@ class MoltenDisasterSplitSecondEffect extends ContinuousRuleModifyingEffectImpl
if (event.getType() == GameEvent.EventType.ACTIVATE_ABILITY) { if (event.getType() == GameEvent.EventType.ACTIVATE_ABILITY) {
Optional<Ability> ability = game.getAbility(event.getTargetId(), event.getSourceId()); Optional<Ability> ability = game.getAbility(event.getTargetId(), event.getSourceId());
if (ability.isPresent() && !(ability.get() instanceof ActivatedManaAbilityImpl)) { if (ability.isPresent() && !(ability.get() instanceof ActivatedManaAbilityImpl)) {
if (KickedCondition.instance.apply(game, source)) { return KickedCondition.instance.apply(game, source);
return true;
}
} }
} }
return false; return false;
@ -130,13 +127,13 @@ class MoltenDisasterEffect extends OneShotEffect {
@Override @Override
public boolean apply(Game game, Ability source) { public boolean apply(Game game, Ability source) {
int amount = source.getManaCostsToPay().getX(); int amount = source.getManaCostsToPay().getX();
for (Permanent permanent: game.getBattlefield().getActivePermanents(filter, source.getControllerId(), game)) { for (Permanent permanent : game.getBattlefield().getActivePermanents(filter, source.getControllerId(), game)) {
permanent.damage(amount, source.getSourceId(), game, false, true); permanent.damage(amount, source.getSourceId(), game, false, true);
} }
for (UUID playerId: game.getState().getPlayersInRange(source.getControllerId(), game)) { for (UUID playerId : game.getState().getPlayersInRange(source.getControllerId(), game)) {
Player player = game.getPlayer(playerId); Player player = game.getPlayer(playerId);
if (player != null) { if (player != null) {
player.damage(amount, source.getSourceId(), game, false, true); player.damage(amount, source.getSourceId(), game);
} }
} }
return true; return true;

View file

@ -64,7 +64,7 @@ class RazorPendulumEffect extends OneShotEffect {
if (player == null) { if (player == null) {
return false; return false;
} }
return player.damage(2, source.getSourceId(), game) > 0; return player.damage(2, source.getSourceId(), game, false, true) > 0;
} }
} }

View file

@ -1,7 +1,5 @@
package mage.cards.s; package mage.cards.s;
import java.util.UUID;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.OneShotEffect;
import mage.cards.CardImpl; import mage.cards.CardImpl;
@ -9,15 +7,14 @@ import mage.cards.CardSetInfo;
import mage.choices.ChoiceColor; import mage.choices.ChoiceColor;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.Outcome; import mage.constants.Outcome;
import mage.filter.FilterPermanent;
import mage.filter.common.FilterCreaturePermanent; import mage.filter.common.FilterCreaturePermanent;
import mage.filter.predicate.mageobject.ColorPredicate; import mage.filter.predicate.mageobject.ColorPredicate;
import mage.game.Game; import mage.game.Game;
import mage.game.permanent.Permanent;
import mage.players.Player; import mage.players.Player;
import java.util.UUID;
/** /**
*
* @author noahg * @author noahg
*/ */
public final class SearingRays extends CardImpl { public final class SearingRays extends CardImpl {
@ -61,14 +58,14 @@ class SearingRaysEffect extends OneShotEffect {
Player controller = game.getPlayer(source.getControllerId()); Player controller = game.getPlayer(source.getControllerId());
ChoiceColor choice = new ChoiceColor(); ChoiceColor choice = new ChoiceColor();
if (controller != null && controller.choose(outcome, choice, game) && choice.getColor() != null) { if (controller != null && controller.choose(outcome, choice, game) && choice.getColor() != null) {
FilterCreaturePermanent filter = new FilterCreaturePermanent(choice.getColor().getDescription()+" creatures"); FilterCreaturePermanent filter = new FilterCreaturePermanent(choice.getColor().getDescription() + " creatures");
filter.add(new ColorPredicate(choice.getColor())); filter.add(new ColorPredicate(choice.getColor()));
for (UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) { for (UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) {
int amount = game.getBattlefield().countAll(filter , playerId, game); int amount = game.getBattlefield().countAll(filter, playerId, game);
if (amount > 0) { if (amount > 0) {
Player player = game.getPlayer(playerId); Player player = game.getPlayer(playerId);
if (player != null) { if (player != null) {
player.damage(amount, source.getSourceId(), game, false, true); player.damage(amount, source.getSourceId(), game);
} }
} }
} }

View file

@ -1,7 +1,5 @@
package mage.cards.s; package mage.cards.s;
import java.util.UUID;
import mage.MageInt; import mage.MageInt;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.common.DealtDamageToSourceTriggeredAbility; import mage.abilities.common.DealtDamageToSourceTriggeredAbility;
@ -9,13 +7,14 @@ import mage.abilities.effects.OneShotEffect;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.Outcome; import mage.constants.Outcome;
import mage.constants.SubType;
import mage.game.Game; import mage.game.Game;
import mage.players.Player; import mage.players.Player;
import java.util.UUID;
/** /**
*
* @author LevelX2 * @author LevelX2
*/ */
public final class ShinkaGatekeeper extends CardImpl { public final class ShinkaGatekeeper extends CardImpl {
@ -64,7 +63,7 @@ class ShinkaGatekeeperDealDamageEffect extends OneShotEffect {
if (amount > 0) { if (amount > 0) {
Player player = game.getPlayer(source.getControllerId()); Player player = game.getPlayer(source.getControllerId());
if (player != null) { if (player != null) {
player.damage(amount, source.getSourceId(), game, false, true); player.damage(amount, source.getSourceId(), game);
return true; return true;
} }
} }

View file

@ -151,7 +151,7 @@ class SoulBurnEffect extends OneShotEffect {
return false; return false;
} }
lifetogain = Math.min(player.getLife(), lifetogain); lifetogain = Math.min(player.getLife(), lifetogain);
player.damage(totalXAmount, source.getSourceId(), game); player.damage(totalXAmount, source.getSourceId(), game, false, true);
} }
Player controller = game.getPlayer(source.getControllerId()); Player controller = game.getPlayer(source.getControllerId());
if (controller == null) { if (controller == null) {

View file

@ -1,7 +1,5 @@
package mage.cards.s; package mage.cards.s;
import java.util.UUID;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.common.SpellCastControllerTriggeredAbility; import mage.abilities.common.SpellCastControllerTriggeredAbility;
import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.OneShotEffect;
@ -17,8 +15,9 @@ import mage.game.permanent.Permanent;
import mage.players.Player; import mage.players.Player;
import mage.target.common.TargetAnyTarget; import mage.target.common.TargetAnyTarget;
import java.util.UUID;
/** /**
*
* @author North * @author North
*/ */
public final class SphinxBoneWand extends CardImpl { public final class SphinxBoneWand extends CardImpl {
@ -32,7 +31,7 @@ public final class SphinxBoneWand extends CardImpl {
} }
public SphinxBoneWand(UUID ownerId, CardSetInfo setInfo) { public SphinxBoneWand(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{7}"); super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{7}");
// Whenever you cast an instant or sorcery spell, you may put a charge counter on Sphinx-Bone Wand. If you do, Sphinx-Bone Wand deals damage equal to the number of charge counters on it to any target. // Whenever you cast an instant or sorcery spell, you may put a charge counter on Sphinx-Bone Wand. If you do, Sphinx-Bone Wand deals damage equal to the number of charge counters on it to any target.
SpellCastControllerTriggeredAbility ability = new SpellCastControllerTriggeredAbility(new SphinxBoneWandEffect(), filter, true); SpellCastControllerTriggeredAbility ability = new SpellCastControllerTriggeredAbility(new SphinxBoneWandEffect(), filter, true);
@ -79,7 +78,7 @@ class SphinxBoneWandEffect extends OneShotEffect {
} }
Player player = game.getPlayer(source.getFirstTarget()); Player player = game.getPlayer(source.getFirstTarget());
if (player != null) { if (player != null) {
player.damage(amount, source.getSourceId(), game, false, true); player.damage(amount, source.getSourceId(), game);
} }
return true; return true;

View file

@ -1,8 +1,5 @@
package mage.cards.t; package mage.cards.t;
import java.util.List;
import java.util.UUID;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.OneShotEffect;
@ -16,8 +13,10 @@ import mage.game.Game;
import mage.game.permanent.Permanent; import mage.game.permanent.Permanent;
import mage.players.Player; import mage.players.Player;
import java.util.List;
import java.util.UUID;
/** /**
*
* @author Styxo * @author Styxo
*/ */
public final class TreacherousTerrain extends CardImpl { public final class TreacherousTerrain extends CardImpl {
@ -66,7 +65,7 @@ class TreacherousTerrainEffect extends OneShotEffect {
} }
} }
if (amount > 0) { if (amount > 0) {
player.damage(amount, source.getSourceId(), game, false, true); player.damage(amount, source.getSourceId(), game);
} }
} }
} }

View file

@ -1,7 +1,5 @@
package mage.cards.t; package mage.cards.t;
import java.util.UUID;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.OneShotEffect;
import mage.cards.CardImpl; import mage.cards.CardImpl;
@ -14,14 +12,15 @@ import mage.game.Game;
import mage.game.permanent.Permanent; import mage.game.permanent.Permanent;
import mage.players.Player; import mage.players.Player;
import java.util.UUID;
/** /**
*
* @author L_J * @author L_J
*/ */
public final class Typhoon extends CardImpl { public final class Typhoon extends CardImpl {
public Typhoon(UUID ownerId, CardSetInfo setInfo) { public Typhoon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{G}"); super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{G}");
// Typhoon deals damage to each opponent equal to the number of Islands that player controls. // Typhoon deals damage to each opponent equal to the number of Islands that player controls.
this.getSpellAbility().addEffect(new TyphoonEffect()); this.getSpellAbility().addEffect(new TyphoonEffect());
@ -38,9 +37,10 @@ public final class Typhoon extends CardImpl {
} }
class TyphoonEffect extends OneShotEffect { class TyphoonEffect extends OneShotEffect {
private static final FilterPermanent filter = new FilterPermanent(); private static final FilterPermanent filter = new FilterPermanent();
static{
static {
filter.add(SubType.ISLAND.getPredicate()); filter.add(SubType.ISLAND.getPredicate());
} }
@ -64,7 +64,7 @@ class TyphoonEffect extends OneShotEffect {
amount++; amount++;
} }
if (amount > 0) { if (amount > 0) {
player.damage(amount, source.getSourceId(), game, false, true); player.damage(amount, source.getSourceId(), game);
} }
} }
} }

View file

@ -1,7 +1,5 @@
package mage.cards.w; package mage.cards.w;
import java.util.UUID;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.Mode; import mage.abilities.Mode;
import mage.abilities.common.BeginningOfUpkeepTriggeredAbility; import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
@ -14,8 +12,9 @@ import mage.constants.TargetController;
import mage.game.Game; import mage.game.Game;
import mage.players.Player; import mage.players.Player;
import java.util.UUID;
/** /**
*
* @author Plopman * @author Plopman
*/ */
public final class WheelOfTorture extends CardImpl { public final class WheelOfTorture extends CardImpl {
@ -54,7 +53,7 @@ class WheelOfTortureEffect extends OneShotEffect {
if (player != null) { if (player != null) {
int amount = 3 - player.getHand().size(); int amount = 3 - player.getHand().size();
if (amount > 0) { if (amount > 0) {
player.damage(amount, source.getSourceId(), game, false, true); player.damage(amount, source.getSourceId(), game);
return true; return true;
} }
} }

View file

@ -2102,7 +2102,7 @@ public abstract class PlayerImpl implements Player, Serializable {
@Override @Override
public int damage(int damage, UUID sourceId, Game game) { public int damage(int damage, UUID sourceId, Game game) {
return doDamage(damage, sourceId, game, true, false, null); return doDamage(damage, sourceId, game, false, true, null);
} }
@Override @Override