mirror of
https://github.com/magefree/mage.git
synced 2025-12-22 03:22:00 -08:00
Clean up an inconsistency in ZoneChangeEvent handling
Some places set a bit on the ZoneChangeEvent if a permanent was meant to enter the battlefield tapped but only MeldCard ever read that bit to determine whether things should come into play tapped.
This commit is contained in:
parent
c58ad022d7
commit
db3c2e9d8c
5 changed files with 4 additions and 14 deletions
|
|
@ -461,7 +461,7 @@ public abstract class CardImpl extends MageObjectImpl implements Card {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean putOntoBattlefield(Game game, Zone fromZone, UUID sourceId, UUID controllerId, boolean tapped, boolean facedown, ArrayList<UUID> appliedEffects) {
|
public boolean putOntoBattlefield(Game game, Zone fromZone, UUID sourceId, UUID controllerId, boolean tapped, boolean facedown, ArrayList<UUID> appliedEffects) {
|
||||||
ZoneChangeEvent event = new ZoneChangeEvent(this.objectId, sourceId, controllerId, fromZone, Zone.BATTLEFIELD, appliedEffects, tapped);
|
ZoneChangeEvent event = new ZoneChangeEvent(this.objectId, sourceId, controllerId, fromZone, Zone.BATTLEFIELD, appliedEffects);
|
||||||
if (facedown) {
|
if (facedown) {
|
||||||
this.setFaceDown(true, game);
|
this.setFaceDown(true, game);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -279,7 +279,7 @@ public abstract class MeldCard extends CardImpl {
|
||||||
game.setScopeRelevant(false);
|
game.setScopeRelevant(false);
|
||||||
game.applyEffects();
|
game.applyEffects();
|
||||||
if (entered) {
|
if (entered) {
|
||||||
if (event.getFlag()) {
|
if (tapped) {
|
||||||
permanent.setTapped(true);
|
permanent.setTapped(true);
|
||||||
}
|
}
|
||||||
event.setTarget(permanent);
|
event.setTarget(permanent);
|
||||||
|
|
|
||||||
|
|
@ -44,7 +44,7 @@ public enum Zone {
|
||||||
if (this.equals(EXILED)) {
|
if (this.equals(EXILED)) {
|
||||||
return "exile zone";
|
return "exile zone";
|
||||||
}
|
}
|
||||||
return super.toString(); //To change body of generated methods, choose Tools | Templates.
|
return super.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -67,17 +67,12 @@ public class ZoneChangeEvent extends GameEvent {
|
||||||
}
|
}
|
||||||
|
|
||||||
public ZoneChangeEvent(UUID targetId, UUID sourceId, UUID playerId, Zone fromZone, Zone toZone, ArrayList<UUID> appliedEffects) {
|
public ZoneChangeEvent(UUID targetId, UUID sourceId, UUID playerId, Zone fromZone, Zone toZone, ArrayList<UUID> appliedEffects) {
|
||||||
this(targetId, sourceId, playerId, fromZone, toZone, appliedEffects, false);
|
|
||||||
}
|
|
||||||
|
|
||||||
public ZoneChangeEvent(UUID targetId, UUID sourceId, UUID playerId, Zone fromZone, Zone toZone, ArrayList<UUID> appliedEffects, boolean comesIntoPlayTapped) {
|
|
||||||
super(EventType.ZONE_CHANGE, targetId, sourceId, playerId);
|
super(EventType.ZONE_CHANGE, targetId, sourceId, playerId);
|
||||||
this.fromZone = fromZone;
|
this.fromZone = fromZone;
|
||||||
this.toZone = toZone;
|
this.toZone = toZone;
|
||||||
if (appliedEffects != null) {
|
if (appliedEffects != null) {
|
||||||
this.appliedEffects = appliedEffects;
|
this.appliedEffects = appliedEffects;
|
||||||
}
|
}
|
||||||
this.flag = comesIntoPlayTapped;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public ZoneChangeEvent(Permanent target, UUID playerId, Zone fromZone, Zone toZone) {
|
public ZoneChangeEvent(Permanent target, UUID playerId, Zone fromZone, Zone toZone) {
|
||||||
|
|
@ -111,9 +106,4 @@ public class ZoneChangeEvent extends GameEvent {
|
||||||
public boolean isDiesEvent() {
|
public boolean isDiesEvent() {
|
||||||
return (toZone == Zone.GRAVEYARD && fromZone == Zone.BATTLEFIELD);
|
return (toZone == Zone.GRAVEYARD && fromZone == Zone.BATTLEFIELD);
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean comesIntoPlayTapped() {
|
|
||||||
return this.flag;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -3179,7 +3179,7 @@ public abstract class PlayerImpl implements Player, Serializable {
|
||||||
if (faceDown) {
|
if (faceDown) {
|
||||||
card.setFaceDown(true, game);
|
card.setFaceDown(true, game);
|
||||||
}
|
}
|
||||||
ZoneChangeEvent event = new ZoneChangeEvent(card.getId(), source.getSourceId(), controllingPlayerId, fromZone, Zone.BATTLEFIELD, appliedEffects, tapped);
|
ZoneChangeEvent event = new ZoneChangeEvent(card.getId(), source.getSourceId(), controllingPlayerId, fromZone, Zone.BATTLEFIELD, appliedEffects);
|
||||||
if (!game.replaceEvent(event)) {
|
if (!game.replaceEvent(event)) {
|
||||||
// get permanent
|
// get permanent
|
||||||
Permanent permanent;
|
Permanent permanent;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue