diff --git a/Mage/src/mage/abilities/dynamicvalue/common/ManaTypeInManaPoolCount.java b/Mage/src/mage/abilities/dynamicvalue/common/ManaTypeInManaPoolCount.java new file mode 100644 index 00000000000..3d28d65dc51 --- /dev/null +++ b/Mage/src/mage/abilities/dynamicvalue/common/ManaTypeInManaPoolCount.java @@ -0,0 +1,71 @@ +package mage.abilities.dynamicvalue.common; + +import mage.Constants.ManaType; +import mage.abilities.Ability; +import mage.abilities.dynamicvalue.DynamicValue; +import mage.game.Game; +import mage.players.Player; + +/** + * + * @author LevelX2 + */ +public class ManaTypeInManaPoolCount implements DynamicValue { + + private ManaType manaType; + + public ManaTypeInManaPoolCount(ManaType manaType) { + this.manaType = manaType; + } + + public ManaTypeInManaPoolCount(final ManaTypeInManaPoolCount dynamicValue) { + this.manaType = dynamicValue.manaType; + } + + @Override + public int calculate(Game game, Ability sourceAbility) { + int amount = 0; + Player player = game.getPlayer(sourceAbility.getControllerId()); + if (player != null) { + amount = player.getManaPool().get(manaType); + } + return amount; + } + + @Override + public DynamicValue clone() { + return new ManaTypeInManaPoolCount(this); + } + + @Override + public String toString() { + return "1"; + } + + @Override + public String getMessage() { + StringBuilder sb = new StringBuilder(); + switch (manaType) { + case BLACK: + sb.append("black"); + break; + case GREEN: + sb.append("green"); + break; + case RED: + sb.append("red"); + break; + case BLUE: + sb.append("blue"); + break; + case WHITE: + sb.append("white"); + break; + case COLORLESS: + sb.append("colorless"); + break; + } + sb.append(" mana in your mana pool"); + return sb.toString(); + } +} diff --git a/Mage/src/mage/game/GameImpl.java b/Mage/src/mage/game/GameImpl.java index aa881045ec8..5fd405d1cb7 100644 --- a/Mage/src/mage/game/GameImpl.java +++ b/Mage/src/mage/game/GameImpl.java @@ -789,7 +789,9 @@ public abstract class GameImpl> implements Game, Serializa public void emptyManaPools() { if (!replaceEvent(new GameEvent(GameEvent.EventType.EMPTY_MANA_POOLS, null, null, null))) { for (Player player: getPlayers().values()) { - player.getManaPool().emptyPool(); + if (!replaceEvent(new GameEvent(GameEvent.EventType.EMPTY_MANA_POOL, player.getId(), null, player.getId()))) { + player.getManaPool().emptyPool(); + } } } } diff --git a/Mage/src/mage/game/events/GameEvent.java b/Mage/src/mage/game/events/GameEvent.java index 4bc4db2d377..af97ed1b5db 100644 --- a/Mage/src/mage/game/events/GameEvent.java +++ b/Mage/src/mage/game/events/GameEvent.java @@ -74,7 +74,7 @@ public class GameEvent { END_PHASE, END_PHASE_PRE, END_PHASE_POST, END_TURN_STEP_PRE, END_TURN_STEP, END_TURN_STEP_POST, CLEANUP_STEP_PRE, CLEANUP_STEP, CLEANUP_STEP_POST, - EMPTY_MANA_POOLS, + EMPTY_MANA_POOLS, EMPTY_MANA_POOL, AT_END_OF_TURN, //player events diff --git a/Mage/src/mage/players/ManaPool.java b/Mage/src/mage/players/ManaPool.java index f038a4996a1..e752801d2aa 100644 --- a/Mage/src/mage/players/ManaPool.java +++ b/Mage/src/mage/players/ManaPool.java @@ -38,6 +38,7 @@ import mage.game.Game; import mage.game.events.GameEvent; import java.io.Serializable; +import java.lang.reflect.Array; import java.util.ArrayList; import java.util.Iterator; import java.util.List; @@ -129,6 +130,24 @@ public class ManaPool implements Serializable { return get(ManaType.COLORLESS); } + public int emptyManaType(List manaTypeArray) { + int total = count(); + Iterator it = manaItems.iterator(); + while (it.hasNext()) { + ManaPoolItem item = it.next(); + for (ManaType manaType: manaTypeArray) { + if (item.get(manaType) > 0) { + total += item.get(manaType); + item.remove(manaType); + } + } + if (item.count() == 0) { + it.remove(); + } + } + return total; + } + public int emptyPool() { int total = count(); manaItems.clear();