Tokens reworked:

- removed outdated code;
 - updated logic to choose a set code for a tokens in different use cases (related to #10150);
 - added many tests for client and server token's data (related to #10139);
 - prepare for tokens database (related #6955);
This commit is contained in:
Oleg Agafonov 2023-04-13 16:18:53 +04:00
parent ff15edbce8
commit d17df585c5
13 changed files with 409 additions and 89 deletions

View file

@ -561,7 +561,7 @@ public final class CardUtil {
*/
public static int parseCardNumberAsInt(String cardNumber) {
if (cardNumber.isEmpty()) {
if (cardNumber == null || cardNumber.isEmpty()) {
throw new IllegalArgumentException("Card number is empty.");
}

View file

@ -36,12 +36,14 @@ public class CopyTokenFunction implements Function<Token, Card> {
MageObject sourceObj = source;
if (source instanceof PermanentToken) {
// create token from another token
sourceObj = ((PermanentToken) source).getToken();
// to show the source image, the original values have to be used
target.setOriginalExpansionSetCode(((Token) sourceObj).getOriginalExpansionSetCode());
target.setOriginalCardNumber(((Token) sourceObj).getOriginalCardNumber());
target.setCopySourceCard(((PermanentToken) source).getToken().getCopySourceCard());
} else if (source instanceof PermanentCard) {
// create token from non-token permanent
if (((PermanentCard) source).isMorphed() || ((PermanentCard) source).isManifested()) {
MorphAbility.setPermanentToFaceDownCreature(target, game);
return target;
@ -57,6 +59,7 @@ public class CopyTokenFunction implements Function<Token, Card> {
target.setCopySourceCard((Card) sourceObj);
}
} else {
// create token from non-permanent object like card (example: Embalm ability)
target.setOriginalExpansionSetCode(source.getExpansionSetCode());
target.setOriginalCardNumber(source.getCardNumber());
target.setCopySourceCard(source);