mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-19 20:28:00 +00:00
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:
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
tgtC.addTempController(newController, tStamp);
|
||||
|
||||
if (bUntap) {
|
||||
tgtC.untap(true);
|
||||
|
||||
@@ -90,7 +90,7 @@ public class ControlGainVariantEffect extends SpellAbilityEffect {
|
||||
if (!tgtC.isInPlay() || !tgtC.canBeControlledBy(newController)) {
|
||||
continue;
|
||||
}
|
||||
tgtC.setController(newController, tStamp);
|
||||
tgtC.addTempController(newController, tStamp);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user