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);
|
getAction().controllerChangeZoneCorrection(c);
|
||||||
}
|
}
|
||||||
c.removeTempController(p);
|
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)) {
|
if (c.getController().equals(p)) {
|
||||||
getAction().exile(c, null);
|
getAction().exile(c, null);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -96,8 +96,8 @@ public class ControlExchangeEffect extends SpellAbilityEffect {
|
|||||||
}
|
}
|
||||||
|
|
||||||
final long tStamp = game.getNextTimestamp();
|
final long tStamp = game.getNextTimestamp();
|
||||||
object2.setController(player1, tStamp);
|
object2.addTempController(player1, tStamp);
|
||||||
object1.setController(player2, tStamp);
|
object1.addTempController(player2, tStamp);
|
||||||
if (sa.hasParam("RememberExchanged")) {
|
if (sa.hasParam("RememberExchanged")) {
|
||||||
host.addRemembered(object1);
|
host.addRemembered(object1);
|
||||||
host.addRemembered(object2);
|
host.addRemembered(object2);
|
||||||
|
|||||||
@@ -53,10 +53,10 @@ public class ControlExchangeVariantEffect extends SpellAbilityEffect {
|
|||||||
// set new controller
|
// set new controller
|
||||||
final long tStamp = sa.getActivatingPlayer().getGame().getNextTimestamp();
|
final long tStamp = sa.getActivatingPlayer().getGame().getNextTimestamp();
|
||||||
for (final Card c : chosen1) {
|
for (final Card c : chosen1) {
|
||||||
c.setController(player2, tStamp);
|
c.addTempController(player2, tStamp);
|
||||||
}
|
}
|
||||||
for (final Card c : chosen2) {
|
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();
|
long tStamp = game.getNextTimestamp();
|
||||||
if (lose != null) {
|
tgtC.addTempController(newController, tStamp);
|
||||||
tgtC.addTempController(newController, tStamp);
|
|
||||||
} else {
|
|
||||||
tgtC.setController(newController, tStamp);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (bUntap) {
|
if (bUntap) {
|
||||||
tgtC.untap(true);
|
tgtC.untap(true);
|
||||||
|
|||||||
@@ -90,7 +90,7 @@ public class ControlGainVariantEffect extends SpellAbilityEffect {
|
|||||||
if (!tgtC.isInPlay() || !tgtC.canBeControlledBy(newController)) {
|
if (!tgtC.isInPlay() || !tgtC.canBeControlledBy(newController)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
tgtC.setController(newController, tStamp);
|
tgtC.addTempController(newController, tStamp);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -87,7 +87,7 @@ public class ControlSpellEffect extends SpellAbilityEffect {
|
|||||||
if (remember) {
|
if (remember) {
|
||||||
source.addRemembered(c);
|
source.addRemembered(c);
|
||||||
}
|
}
|
||||||
c.setController(si.getActivatingPlayer(), tStamp);
|
c.addTempController(si.getActivatingPlayer(), tStamp);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -98,7 +98,7 @@ public class ControlSpellEffect extends SpellAbilityEffect {
|
|||||||
if (remember) {
|
if (remember) {
|
||||||
source.addRemembered(tgtC);
|
source.addRemembered(tgtC);
|
||||||
}
|
}
|
||||||
tgtC.setController(newController, tStamp);
|
tgtC.addTempController(newController, tStamp);
|
||||||
si.setActivatingPlayer(newController);
|
si.setActivatingPlayer(newController);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -30,8 +30,6 @@ public class PermanentEffect extends SpellAbilityEffect {
|
|||||||
CardZoneTable table = new CardZoneTable();
|
CardZoneTable table = new CardZoneTable();
|
||||||
ZoneType previousZone = host.getZone().getZoneType();
|
ZoneType previousZone = host.getZone().getZoneType();
|
||||||
|
|
||||||
host.setController(sa.getActivatingPlayer(), 0);
|
|
||||||
|
|
||||||
CardCollectionView lastStateBattlefield = game.copyLastStateBattlefield();
|
CardCollectionView lastStateBattlefield = game.copyLastStateBattlefield();
|
||||||
CardCollectionView lastStateGraveyard = game.copyLastStateGraveyard();
|
CardCollectionView lastStateGraveyard = game.copyLastStateGraveyard();
|
||||||
|
|
||||||
|
|||||||
@@ -91,7 +91,7 @@ public class CostGainControl extends CostPartWithList {
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
protected Card doPayment(SpellAbility ability, Card targetCard) {
|
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;
|
return targetCard;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user