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

@@ -768,13 +768,20 @@ public class Game {
} else {
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())) {
planarControllerLost = true;
}
if(isMultiplayer) {
if (isMultiplayer) {
// unattach all "Enchant Player"
c.removeAttachedTo(p);
if (c.getOwner().equals(p)) {
@@ -784,6 +791,8 @@ public class Game {
cc.removeRemembered(c);
}
c.ceaseToExist(false);
// CR 603.2f owner of trigger source lost game
triggerHandler.clearDelayedTrigger(c);
} else {
// return stolen permanents
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) {
// CR 800.4d if card is controlled by opponent, LTB should trigger
if (skipTrig || getOwner().equals(getController())) {
getGame().getTriggerHandler().suppressMode(TriggerType.ChangesZone);
// CR 603.6c other players LTB triggers should work
if (skipTrig) {
getZone().remove(this);
setZone(getOwner().getZone(ZoneType.None));
}
game.getAction().moveTo(ZoneType.None, this, null);
if (skipTrig || getOwner().equals(getController())) {
getGame().getTriggerHandler().clearSuppression(TriggerType.ChangesZone);
else {
game.getAction().moveTo(ZoneType.None, this, null);
}
}

View File

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