mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-15 02:08:00 +00:00
LTB triggers for opponents
This commit is contained in:
@@ -769,12 +769,19 @@ public class Game {
|
|||||||
p.revealFaceDownCards();
|
p.revealFaceDownCards();
|
||||||
}
|
}
|
||||||
|
|
||||||
for(Card c : cards) {
|
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) {
|
||||||
if (c.getController().equals(p) && (c.isPlane() || c.isPhenomenon())) {
|
if (c.getController().equals(p) && (c.isPlane() || c.isPhenomenon())) {
|
||||||
planarControllerLost = true;
|
planarControllerLost = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(isMultiplayer) {
|
if (isMultiplayer) {
|
||||||
// unattach all "Enchant Player"
|
// unattach all "Enchant Player"
|
||||||
c.removeAttachedTo(p);
|
c.removeAttachedTo(p);
|
||||||
if (c.getOwner().equals(p)) {
|
if (c.getOwner().equals(p)) {
|
||||||
@@ -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)) {
|
||||||
|
|||||||
@@ -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));
|
||||||
}
|
}
|
||||||
game.getAction().moveTo(ZoneType.None, this, null);
|
else {
|
||||||
if (skipTrig || getOwner().equals(getController())) {
|
game.getAction().moveTo(ZoneType.None, this, null);
|
||||||
getGame().getTriggerHandler().clearSuppression(TriggerType.ChangesZone);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user