mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-16 18:58:00 +00:00
Merge branch 'fix_mutated_flip' into 'master'
Fix bug that can't flip or transform when mutated See merge request core-developers/forge!4782
This commit is contained in:
@@ -610,6 +610,10 @@ public class Card extends GameEntity implements Comparable<Card>, IHasSVars {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Need to remove mutated states, otherwise the changeToState() will fail
|
||||||
|
if (hasMergedCard()) {
|
||||||
|
removeMutatedStates();
|
||||||
|
}
|
||||||
CardCollectionView cards = hasMergedCard() ? getMergedCards() : new CardCollection(this);
|
CardCollectionView cards = hasMergedCard() ? getMergedCards() : new CardCollection(this);
|
||||||
boolean retResult = false;
|
boolean retResult = false;
|
||||||
for (final Card c : cards) {
|
for (final Card c : cards) {
|
||||||
@@ -621,8 +625,7 @@ public class Card extends GameEntity implements Comparable<Card>, IHasSVars {
|
|||||||
boolean result = c.changeToState(c.backside ? CardStateName.Transformed : CardStateName.Original);
|
boolean result = c.changeToState(c.backside ? CardStateName.Transformed : CardStateName.Original);
|
||||||
retResult = retResult || result;
|
retResult = retResult || result;
|
||||||
}
|
}
|
||||||
if (retResult && hasMergedCard()) {
|
if (hasMergedCard()) {
|
||||||
removeMutatedStates();
|
|
||||||
rebuildMutatedStates(cause);
|
rebuildMutatedStates(cause);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -643,6 +646,10 @@ public class Card extends GameEntity implements Comparable<Card>, IHasSVars {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Need to remove mutated states, otherwise the changeToState() will fail
|
||||||
|
if (hasMergedCard()) {
|
||||||
|
removeMutatedStates();
|
||||||
|
}
|
||||||
CardCollectionView cards = hasMergedCard() ? getMergedCards() : new CardCollection(this);
|
CardCollectionView cards = hasMergedCard() ? getMergedCards() : new CardCollection(this);
|
||||||
boolean retResult = false;
|
boolean retResult = false;
|
||||||
for (final Card c : cards) {
|
for (final Card c : cards) {
|
||||||
@@ -653,8 +660,7 @@ public class Card extends GameEntity implements Comparable<Card>, IHasSVars {
|
|||||||
boolean result = c.changeToState(CardStateName.Flipped);
|
boolean result = c.changeToState(CardStateName.Flipped);
|
||||||
retResult = retResult || result;
|
retResult = retResult || result;
|
||||||
}
|
}
|
||||||
if (retResult && hasMergedCard()) {
|
if (hasMergedCard()) {
|
||||||
removeMutatedStates();
|
|
||||||
rebuildMutatedStates(cause);
|
rebuildMutatedStates(cause);
|
||||||
game.getTriggerHandler().clearActiveTriggers(this, null);
|
game.getTriggerHandler().clearActiveTriggers(this, null);
|
||||||
game.getTriggerHandler().registerActiveTrigger(this, false);
|
game.getTriggerHandler().registerActiveTrigger(this, false);
|
||||||
|
|||||||
@@ -852,8 +852,8 @@ public class CardFactory {
|
|||||||
final CardCloneStates result = new CardCloneStates(top, sa);
|
final CardCloneStates result = new CardCloneStates(top, sa);
|
||||||
result.put(state, ret);
|
result.put(state, ret);
|
||||||
|
|
||||||
// For transformed, melded or MDFC card, also copy the original state to avoid crash
|
// For face down, flipped, transformed, melded or MDFC card, also copy the original state to avoid crash
|
||||||
if (state == CardStateName.Transformed || state == CardStateName.Meld || state == CardStateName.Modal) {
|
if (state != CardStateName.Original) {
|
||||||
final CardState ret1 = new CardState(card, CardStateName.Original);
|
final CardState ret1 = new CardState(card, CardStateName.Original);
|
||||||
ret1.copyFrom(top.getState(CardStateName.Original, true), false);
|
ret1.copyFrom(top.getState(CardStateName.Original, true), false);
|
||||||
result.put(CardStateName.Original, ret1);
|
result.put(CardStateName.Original, ret1);
|
||||||
|
|||||||
Reference in New Issue
Block a user