LTB triggers for opponents

This commit is contained in:
tool4EvEr
2021-04-15 20:20:52 +02:00
parent 43171879a0
commit 5aaf39f40b
3 changed files with 19 additions and 10 deletions

View File

@@ -769,6 +769,13 @@ public class Game {
p.revealFaceDownCards(); p.revealFaceDownCards();
} }
for (Card c : cards) {
// CR 800.4d if card is controlled by opponent, LTB should trigger
if (c.getOwner().equals(p) && c.getController().equals(p)) {
c.getCurrentState().clearTriggers();
}
}
for (Card c : cards) { for (Card c : cards) {
if (c.getController().equals(p) && (c.isPlane() || c.isPhenomenon())) { if (c.getController().equals(p) && (c.isPlane() || c.isPhenomenon())) {
planarControllerLost = true; planarControllerLost = true;
@@ -784,6 +791,8 @@ public class Game {
cc.removeRemembered(c); cc.removeRemembered(c);
} }
c.ceaseToExist(false); c.ceaseToExist(false);
// CR 603.2f owner of trigger source lost game
triggerHandler.clearDelayedTrigger(c);
} else { } else {
// return stolen permanents // return stolen permanents
if (c.getController().equals(p) && c.isInZone(ZoneType.Battlefield)) { if (c.getController().equals(p) && c.isInZone(ZoneType.Battlefield)) {

View File

@@ -6757,13 +6757,13 @@ public class Card extends GameEntity implements Comparable<Card>, IHasSVars {
} }
public void ceaseToExist(boolean skipTrig) { public void ceaseToExist(boolean skipTrig) {
// CR 800.4d if card is controlled by opponent, LTB should trigger // CR 603.6c other players LTB triggers should work
if (skipTrig || getOwner().equals(getController())) { if (skipTrig) {
getGame().getTriggerHandler().suppressMode(TriggerType.ChangesZone); getZone().remove(this);
setZone(getOwner().getZone(ZoneType.None));
} }
else {
game.getAction().moveTo(ZoneType.None, this, null); game.getAction().moveTo(ZoneType.None, this, null);
if (skipTrig || getOwner().equals(getController())) {
getGame().getTriggerHandler().clearSuppression(TriggerType.ChangesZone);
} }
} }

View File

@@ -633,8 +633,8 @@ public class TriggerHandler {
public void onPlayerLost(Player p) { public void onPlayerLost(Player p) {
List<Trigger> lost = new ArrayList<>(); List<Trigger> lost = new ArrayList<>();
for (Trigger t : delayedTriggers) { for (Trigger t : delayedTriggers) {
// CR 603.2f owner of trigger source lost game || 800.4d trigger controller lost game // CR 800.4d trigger controller lost game
if (game.getCardState(t.getHostCard(), null) == null || t.getHostCard().getOwner().equals(p)) { if (t.getHostCard().getOwner().equals(p)) {
lost.add(t); lost.add(t);
} }
} }