Fix Multiplayer LTB triggers

This commit is contained in:
tool4EvEr
2021-04-14 20:30:17 +02:00
parent 27a93b318d
commit 2f7a30f920
7 changed files with 15 additions and 11 deletions

View File

@@ -1029,7 +1029,7 @@ public class PlayerControllerAi extends PlayerController {
*/
if (sa.isMayChooseNewTargets() && !sa.setupTargets()) {
if (sa.isSpell()) {
sa.getHostCard().ceaseToExist();
sa.getHostCard().ceaseToExist(false);
}
continue;
}

View File

@@ -783,7 +783,7 @@ public class Game {
cc.removeEncodedCard(c);
cc.removeRemembered(c);
}
c.ceaseToExist();
c.ceaseToExist(false);
} else {
// return stolen permanents
if (c.getController().equals(p) && c.isInZone(ZoneType.Battlefield)) {

View File

@@ -6756,12 +6756,16 @@ public class Card extends GameEntity implements Comparable<Card>, IHasSVars {
}
}
public void ceaseToExist() {
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);
getZone().remove(this);
setZone(null);
}
game.getAction().moveTo(ZoneType.None, this, null);
if (skipTrig && getOwner().equals(getController())) {
getGame().getTriggerHandler().clearSuppression(TriggerType.ChangesZone);
}
}
public void forceTurnFaceUp() {
getGame().getTriggerHandler().suppressMode(TriggerType.TurnFaceUp);

View File

@@ -133,7 +133,7 @@ import forge.util.collect.FCollectionView;
public class Player extends GameEntity implements Comparable<Player> {
public static final List<ZoneType> ALL_ZONES = Collections.unmodifiableList(Arrays.asList(ZoneType.Battlefield,
ZoneType.Library, ZoneType.Graveyard, ZoneType.Hand, ZoneType.Exile, ZoneType.Command, ZoneType.Ante,
ZoneType.Sideboard, ZoneType.PlanarDeck, ZoneType.SchemeDeck, ZoneType.Merged, ZoneType.Subgame));
ZoneType.Sideboard, ZoneType.PlanarDeck, ZoneType.SchemeDeck, ZoneType.Merged, ZoneType.Subgame, ZoneType.None));
private final Map<Card, Integer> commanderDamage = Maps.newHashMap();

View File

@@ -2361,7 +2361,7 @@ public abstract class SpellAbility extends CardTraitBase implements ISpellAbilit
public void rollback() {
for (Card c : rollbackEffects) {
c.ceaseToExist();
c.ceaseToExist(true);
}
rollbackEffects.clear();
}

View File

@@ -586,7 +586,7 @@ public class MagicStack /* extends MyObservable */ implements Iterable<SpellAbil
}
if (source.isCopiedSpell() && source.isInZone(ZoneType.Stack)) {
source.ceaseToExist();
source.ceaseToExist(true);
return;
}

View File

@@ -2838,7 +2838,7 @@ public class PlayerControllerHuman extends PlayerController implements IGameCont
continue;
}
c.getZone().remove(c);
c.ceaseToExist();
c.ceaseToExist(true);
StringBuilder sb = new StringBuilder();
sb.append(p).append(" removes ").append(c).append(" from game due to Dev Cheats.");