mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-19 20:28:00 +00:00
Card: setChangedCardKeywords should not copy when adding to stack
This commit is contained in:
@@ -356,7 +356,7 @@ public class GameCopier {
|
||||
|
||||
newCard.setChangedCardTypes(c.getChangedCardTypesTable());
|
||||
newCard.setChangedCardTypesCharacterDefining(c.getChangedCardTypesCharacterDefiningTable());
|
||||
newCard.setChangedCardKeywords(c.getChangedCardKeywords());
|
||||
newCard.setChangedCardKeywords(c.getChangedCardKeywords(), true);
|
||||
newCard.setChangedCardNames(c.getChangedCardNames());
|
||||
|
||||
for (Table.Cell<Long, Long, List<String>> kw : c.getHiddenExtrinsicKeywordsTable().cellSet()) {
|
||||
|
||||
@@ -268,7 +268,7 @@ public class GameAction {
|
||||
// when moving to stack, copy changed card information
|
||||
copied.setChangedCardColors(c.getChangedCardColorsTable());
|
||||
copied.setChangedCardColorsCharacterDefining(c.getChangedCardColorsCharacterDefiningTable());
|
||||
copied.setChangedCardKeywords(c.getChangedCardKeywords());
|
||||
copied.setChangedCardKeywords(c.getChangedCardKeywords(), false);
|
||||
copied.setChangedCardTypes(c.getChangedCardTypesTable());
|
||||
copied.setChangedCardTypesCharacterDefining(c.getChangedCardTypesCharacterDefiningTable());
|
||||
copied.setChangedCardNames(c.getChangedCardNames());
|
||||
@@ -622,7 +622,9 @@ public class GameAction {
|
||||
if (zoneTo.is(ZoneType.Stack) && cause != null && cause.isSpell() && !cause.isIntrinsic() && c.equals(cause.getHostCard())) {
|
||||
if (cause.getKeyword() != null) {
|
||||
if (!copied.getKeywords().contains(cause.getKeyword())) {
|
||||
copied.addChangedCardKeywordsInternal(ImmutableList.of(cause.getKeyword()), null, false, game.getTimestamp(), 0, false);
|
||||
copied.addChangedCardKeywordsInternal(ImmutableList.of(cause.getKeyword()), null, false, game.getNextTimestamp(), 0, false);
|
||||
// update Keyword Cache
|
||||
copied.updateKeywords();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6876,10 +6876,19 @@ public class Card extends GameEntity implements Comparable<Card>, IHasSVars {
|
||||
this.changedCardTypesCharacterDefining.putAll(changedCardTypes);
|
||||
}
|
||||
|
||||
public void setChangedCardKeywords(Table<Long, Long, KeywordsChange> changedCardKeywords) {
|
||||
public void setChangedCardKeywords(Table<Long, Long, KeywordsChange> changedCardKeywords, boolean copy) {
|
||||
this.changedCardKeywords.clear();
|
||||
for (Table.Cell<Long, Long, KeywordsChange> entry : changedCardKeywords.cellSet()) {
|
||||
this.changedCardKeywords.put(entry.getRowKey(), entry.getColumnKey(), entry.getValue().copy(this, true));
|
||||
KeywordsChange result = entry.getValue();
|
||||
if (copy) {
|
||||
result = result.copy(this, true);
|
||||
} else {
|
||||
// do not copy the keywords, just update the host
|
||||
for (KeywordInterface k : result.getKeywords()) {
|
||||
k.setHostCard(this);
|
||||
}
|
||||
}
|
||||
this.changedCardKeywords.put(entry.getRowKey(), entry.getColumnKey(), result);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -287,7 +287,7 @@ public final class CardUtil {
|
||||
|
||||
newCopy.setChangedCardColors(in.getChangedCardColorsTable());
|
||||
newCopy.setChangedCardColorsCharacterDefining(in.getChangedCardColorsCharacterDefiningTable());
|
||||
newCopy.setChangedCardKeywords(in.getChangedCardKeywords());
|
||||
newCopy.setChangedCardKeywords(in.getChangedCardKeywords(), true);
|
||||
newCopy.setChangedCardTypes(in.getChangedCardTypesTable());
|
||||
newCopy.setChangedCardTypesCharacterDefining(in.getChangedCardTypesCharacterDefiningTable());
|
||||
newCopy.setChangedCardNames(in.getChangedCardNames());
|
||||
|
||||
Reference in New Issue
Block a user