Merge branch 'control' into 'master'

Control changing effects should not overwrite default controller

Closes #1990

See merge request core-developers/forge!5624
This commit is contained in:
Michael Kamensky
2021-10-23 04:03:55 +00:00
8 changed files with 14 additions and 15 deletions

View File

@@ -828,6 +828,11 @@ public class Game {
getAction().controllerChangeZoneCorrection(c);
}
c.removeTempController(p);
// return stolen spells
if (c.isInZone(ZoneType.Stack)) {
SpellAbilityStackInstance si = getStack().getInstanceFromSpellAbility(c.getCastSA());
si.setActivatingPlayer(c.getController());
}
if (c.getController().equals(p)) {
getAction().exile(c, null);
}

View File

@@ -96,8 +96,8 @@ public class ControlExchangeEffect extends SpellAbilityEffect {
}
final long tStamp = game.getNextTimestamp();
object2.setController(player1, tStamp);
object1.setController(player2, tStamp);
object2.addTempController(player1, tStamp);
object1.addTempController(player2, tStamp);
if (sa.hasParam("RememberExchanged")) {
host.addRemembered(object1);
host.addRemembered(object2);

View File

@@ -53,10 +53,10 @@ public class ControlExchangeVariantEffect extends SpellAbilityEffect {
// set new controller
final long tStamp = sa.getActivatingPlayer().getGame().getNextTimestamp();
for (final Card c : chosen1) {
c.setController(player2, tStamp);
c.addTempController(player2, tStamp);
}
for (final Card c : chosen2) {
c.setController(player1, tStamp);
c.addTempController(player1, tStamp);
}
}
}

View File

@@ -145,11 +145,7 @@ public class ControlGainEffect extends SpellAbilityEffect {
}
long tStamp = game.getNextTimestamp();
if (lose != null) {
tgtC.addTempController(newController, tStamp);
} else {
tgtC.setController(newController, tStamp);
}
if (bUntap) {
tgtC.untap(true);

View File

@@ -90,7 +90,7 @@ public class ControlGainVariantEffect extends SpellAbilityEffect {
if (!tgtC.isInPlay() || !tgtC.canBeControlledBy(newController)) {
continue;
}
tgtC.setController(newController, tStamp);
tgtC.addTempController(newController, tStamp);
}
}
}

View File

@@ -87,7 +87,7 @@ public class ControlSpellEffect extends SpellAbilityEffect {
if (remember) {
source.addRemembered(c);
}
c.setController(si.getActivatingPlayer(), tStamp);
c.addTempController(si.getActivatingPlayer(), tStamp);
}
}
@@ -98,7 +98,7 @@ public class ControlSpellEffect extends SpellAbilityEffect {
if (remember) {
source.addRemembered(tgtC);
}
tgtC.setController(newController, tStamp);
tgtC.addTempController(newController, tStamp);
si.setActivatingPlayer(newController);
}
}

View File

@@ -30,8 +30,6 @@ public class PermanentEffect extends SpellAbilityEffect {
CardZoneTable table = new CardZoneTable();
ZoneType previousZone = host.getZone().getZoneType();
host.setController(sa.getActivatingPlayer(), 0);
CardCollectionView lastStateBattlefield = game.copyLastStateBattlefield();
CardCollectionView lastStateGraveyard = game.copyLastStateGraveyard();

View File

@@ -91,7 +91,7 @@ public class CostGainControl extends CostPartWithList {
*/
@Override
protected Card doPayment(SpellAbility ability, Card targetCard) {
targetCard.setController(ability.getActivatingPlayer(), ability.getActivatingPlayer().getGame().getNextTimestamp());
targetCard.addTempController(ability.getActivatingPlayer(), ability.getActivatingPlayer().getGame().getNextTimestamp());
return targetCard;
}