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;
|
||||
}
|
||||
|
||||
// Need to remove mutated states, otherwise the changeToState() will fail
|
||||
if (hasMergedCard()) {
|
||||
removeMutatedStates();
|
||||
}
|
||||
CardCollectionView cards = hasMergedCard() ? getMergedCards() : new CardCollection(this);
|
||||
boolean retResult = false;
|
||||
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);
|
||||
retResult = retResult || result;
|
||||
}
|
||||
if (retResult && hasMergedCard()) {
|
||||
removeMutatedStates();
|
||||
if (hasMergedCard()) {
|
||||
rebuildMutatedStates(cause);
|
||||
}
|
||||
|
||||
@@ -643,6 +646,10 @@ public class Card extends GameEntity implements Comparable<Card>, IHasSVars {
|
||||
return false;
|
||||
}
|
||||
|
||||
// Need to remove mutated states, otherwise the changeToState() will fail
|
||||
if (hasMergedCard()) {
|
||||
removeMutatedStates();
|
||||
}
|
||||
CardCollectionView cards = hasMergedCard() ? getMergedCards() : new CardCollection(this);
|
||||
boolean retResult = false;
|
||||
for (final Card c : cards) {
|
||||
@@ -653,8 +660,7 @@ public class Card extends GameEntity implements Comparable<Card>, IHasSVars {
|
||||
boolean result = c.changeToState(CardStateName.Flipped);
|
||||
retResult = retResult || result;
|
||||
}
|
||||
if (retResult && hasMergedCard()) {
|
||||
removeMutatedStates();
|
||||
if (hasMergedCard()) {
|
||||
rebuildMutatedStates(cause);
|
||||
game.getTriggerHandler().clearActiveTriggers(this, null);
|
||||
game.getTriggerHandler().registerActiveTrigger(this, false);
|
||||
|
||||
@@ -852,8 +852,8 @@ public class CardFactory {
|
||||
final CardCloneStates result = new CardCloneStates(top, sa);
|
||||
result.put(state, ret);
|
||||
|
||||
// For transformed, melded or MDFC card, also copy the original state to avoid crash
|
||||
if (state == CardStateName.Transformed || state == CardStateName.Meld || state == CardStateName.Modal) {
|
||||
// For face down, flipped, transformed, melded or MDFC card, also copy the original state to avoid crash
|
||||
if (state != CardStateName.Original) {
|
||||
final CardState ret1 = new CardState(card, CardStateName.Original);
|
||||
ret1.copyFrom(top.getState(CardStateName.Original, true), false);
|
||||
result.put(CardStateName.Original, ret1);
|
||||
|
||||
Reference in New Issue
Block a user