mirror of
https://github.com/correl/mage.git
synced 2024-12-25 11:11:16 +00:00
* Kydele, Chosen of Kruphix - Fixed a bug caused by the watcher object.
This commit is contained in:
parent
ed70fd1f00
commit
6962f02ab8
3 changed files with 21 additions and 22 deletions
|
@ -65,7 +65,7 @@ public class KydeleChosenOfKruphix extends CardImpl {
|
|||
|
||||
// {T}: Add {C} to your mana pool for each card you've drawn this turn.
|
||||
DynamicManaAbility ability = new DynamicManaAbility(Mana.ColorlessMana(1), new CardsDrawnThisTurnDynamicValue(), new TapSourceCost());
|
||||
this.addAbility(ability, new CardsDrawnThisTurnWatcher());
|
||||
this.addAbility(ability, new KydeleCardsDrawnThisTurnWatcher());
|
||||
|
||||
// Partner
|
||||
this.addAbility(PartnerAbility.getInstance());
|
||||
|
@ -85,7 +85,7 @@ class CardsDrawnThisTurnDynamicValue implements DynamicValue {
|
|||
|
||||
@Override
|
||||
public int calculate(Game game, Ability sourceAbility, Effect effect) {
|
||||
CardsDrawnThisTurnWatcher watcher = (CardsDrawnThisTurnWatcher) game.getState().getWatchers().get("CardsDrawnThisTurnWatcher");
|
||||
KydeleCardsDrawnThisTurnWatcher watcher = (KydeleCardsDrawnThisTurnWatcher) game.getState().getWatchers().get(KydeleCardsDrawnThisTurnWatcher.class.getName());
|
||||
return watcher.getNumCardsDrawnThisTurn(sourceAbility.getControllerId());
|
||||
}
|
||||
|
||||
|
@ -105,15 +105,15 @@ class CardsDrawnThisTurnDynamicValue implements DynamicValue {
|
|||
}
|
||||
}
|
||||
|
||||
class CardsDrawnThisTurnWatcher extends Watcher {
|
||||
class KydeleCardsDrawnThisTurnWatcher extends Watcher {
|
||||
|
||||
private final Map<UUID, Set<UUID>> cardsDrawnThisTurn = new HashMap<>();
|
||||
|
||||
public CardsDrawnThisTurnWatcher() {
|
||||
super("CardsDrawnThisTurnWatcher", WatcherScope.GAME);
|
||||
public KydeleCardsDrawnThisTurnWatcher() {
|
||||
super(KydeleCardsDrawnThisTurnWatcher.class.getName(), WatcherScope.GAME);
|
||||
}
|
||||
|
||||
public CardsDrawnThisTurnWatcher(final CardsDrawnThisTurnWatcher watcher) {
|
||||
public KydeleCardsDrawnThisTurnWatcher(final KydeleCardsDrawnThisTurnWatcher watcher) {
|
||||
super(watcher);
|
||||
this.cardsDrawnThisTurn.putAll(watcher.cardsDrawnThisTurn);
|
||||
}
|
||||
|
@ -130,10 +130,6 @@ class CardsDrawnThisTurnWatcher extends Watcher {
|
|||
}
|
||||
}
|
||||
|
||||
private Set<UUID> getCardsDrawnThisTurn(UUID playerId) {
|
||||
return cardsDrawnThisTurn.get(playerId);
|
||||
}
|
||||
|
||||
public int getNumCardsDrawnThisTurn(UUID playerId) {
|
||||
if (cardsDrawnThisTurn.get(playerId) == null) {
|
||||
return 0;
|
||||
|
@ -149,7 +145,7 @@ class CardsDrawnThisTurnWatcher extends Watcher {
|
|||
}
|
||||
|
||||
@Override
|
||||
public CardsDrawnThisTurnWatcher copy() {
|
||||
return new CardsDrawnThisTurnWatcher(this);
|
||||
public KydeleCardsDrawnThisTurnWatcher copy() {
|
||||
return new KydeleCardsDrawnThisTurnWatcher(this);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -60,11 +60,11 @@ import mage.watchers.Watcher;
|
|||
public class SylvanLibrary extends CardImpl {
|
||||
|
||||
public SylvanLibrary(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{G}");
|
||||
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{G}");
|
||||
|
||||
// At the beginning of your draw step, you may draw two additional cards. If you do, choose two cards in your hand drawn this turn. For each of those cards, pay 4 life or put the card on top of your library.
|
||||
this.addAbility(new BeginningOfDrawTriggeredAbility(new SylvanLibraryEffect(), TargetController.YOU, true),
|
||||
new CardsDrawnThisTurnWatcher());
|
||||
new SylvanLibraryCardsDrawnThisTurnWatcher());
|
||||
|
||||
}
|
||||
|
||||
|
@ -99,7 +99,7 @@ class SylvanLibraryEffect extends OneShotEffect {
|
|||
Player controller = game.getPlayer(source.getControllerId());
|
||||
if (controller != null) {
|
||||
controller.drawCards(2, game);
|
||||
CardsDrawnThisTurnWatcher watcher = (CardsDrawnThisTurnWatcher) game.getState().getWatchers().get("CardsDrawnThisTurnWatcher");
|
||||
SylvanLibraryCardsDrawnThisTurnWatcher watcher = (SylvanLibraryCardsDrawnThisTurnWatcher) game.getState().getWatchers().get("SylvanLibraryCardsDrawnThisTurnWatcher");
|
||||
if (watcher != null) {
|
||||
Cards cards = new CardsImpl();
|
||||
Set<UUID> cardsDrawnThisTurn = watcher.getCardsDrawnThisTurn(controller.getId());
|
||||
|
@ -141,15 +141,15 @@ class SylvanLibraryEffect extends OneShotEffect {
|
|||
}
|
||||
}
|
||||
|
||||
class CardsDrawnThisTurnWatcher extends Watcher {
|
||||
class SylvanLibraryCardsDrawnThisTurnWatcher extends Watcher {
|
||||
|
||||
private final Map<UUID, Set<UUID>> cardsDrawnThisTurn = new HashMap<>();
|
||||
|
||||
public CardsDrawnThisTurnWatcher() {
|
||||
super("CardsDrawnThisTurnWatcher", WatcherScope.GAME);
|
||||
public SylvanLibraryCardsDrawnThisTurnWatcher() {
|
||||
super("SylvanLibraryCardsDrawnThisTurnWatcher", WatcherScope.GAME);
|
||||
}
|
||||
|
||||
public CardsDrawnThisTurnWatcher(final CardsDrawnThisTurnWatcher watcher) {
|
||||
public SylvanLibraryCardsDrawnThisTurnWatcher(final SylvanLibraryCardsDrawnThisTurnWatcher watcher) {
|
||||
super(watcher);
|
||||
this.cardsDrawnThisTurn.putAll(watcher.cardsDrawnThisTurn);
|
||||
}
|
||||
|
@ -177,8 +177,8 @@ class CardsDrawnThisTurnWatcher extends Watcher {
|
|||
}
|
||||
|
||||
@Override
|
||||
public CardsDrawnThisTurnWatcher copy() {
|
||||
return new CardsDrawnThisTurnWatcher(this);
|
||||
public SylvanLibraryCardsDrawnThisTurnWatcher copy() {
|
||||
return new SylvanLibraryCardsDrawnThisTurnWatcher(this);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -189,6 +189,9 @@ public class CombatGroup implements Serializable, Copyable<CombatGroup> {
|
|||
* @return
|
||||
*/
|
||||
private boolean canDamage(Permanent perm, boolean first) {
|
||||
if (perm == null) {
|
||||
return false;
|
||||
}
|
||||
// if now first strike combat damage step
|
||||
if (first) {
|
||||
// should have first strike or double strike
|
||||
|
|
Loading…
Reference in a new issue