mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-20 04:38:00 +00:00
Merge branch 'tokencards' into 'master'
Add Time Sidewalk and Bone Rattler See merge request core-developers/forge!4690
This commit is contained in:
@@ -97,6 +97,7 @@ public enum ApiType {
|
||||
LookAt (LookAtEffect.class),
|
||||
LoseLife (LifeLoseEffect.class),
|
||||
LosesGame (GameLossEffect.class),
|
||||
MakeCard (MakeCardEffect.class),
|
||||
Mana (ManaEffect.class),
|
||||
ManaReflected (ManaReflectedEffect.class),
|
||||
Manifest (ManifestEffect.class),
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
package forge.game.ability.effects;
|
||||
|
||||
import forge.StaticData;
|
||||
import forge.game.Game;
|
||||
import forge.game.ability.SpellAbilityEffect;
|
||||
import forge.game.card.Card;
|
||||
import forge.game.card.CardCollection;
|
||||
import forge.game.player.Player;
|
||||
import forge.game.spellability.SpellAbility;
|
||||
import forge.game.zone.ZoneType;
|
||||
|
||||
public class MakeCardEffect extends SpellAbilityEffect {
|
||||
@Override
|
||||
public void resolve(SpellAbility sa) {
|
||||
final Player player = sa.getActivatingPlayer();
|
||||
final Game game = player.getGame();
|
||||
|
||||
final String name = sa.hasParam("Name") ? sa.getParam("Name") : sa.getHostCard().getName();
|
||||
final ZoneType zone = ZoneType.smartValueOf(sa.getParamOrDefault("Zone", "Library"));
|
||||
int amount = sa.hasParam("Amount") ? Integer.parseInt(sa.getParam("Amount")) : 1;
|
||||
|
||||
CardCollection cards = new CardCollection();
|
||||
|
||||
while (amount > 0) {
|
||||
Card card = Card.fromPaperCard(StaticData.instance().getCommonCards().getUniqueByName(name), player);
|
||||
if (!sa.hasParam("NotToken")) { card.setTokenCard(true); }
|
||||
cards.add(card);
|
||||
amount--;
|
||||
}
|
||||
|
||||
for (final Card c : cards) {
|
||||
game.getAction().moveTo(zone, c, sa);
|
||||
}
|
||||
if (zone.equals(ZoneType.Library)) {
|
||||
player.shuffle(sa);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -222,6 +222,7 @@ public class Card extends GameEntity implements Comparable<Card>, IHasSVars {
|
||||
private boolean tapped = false;
|
||||
private boolean sickness = true; // summoning sickness
|
||||
private boolean token = false;
|
||||
private boolean tokenCard = false;
|
||||
private Card copiedPermanent = null;
|
||||
private boolean copiedSpell = false;
|
||||
|
||||
@@ -2921,6 +2922,18 @@ public class Card extends GameEntity implements Comparable<Card>, IHasSVars {
|
||||
view.updateToken(this);
|
||||
}
|
||||
|
||||
public final boolean isTokenCard() {
|
||||
if (isInZone(ZoneType.Battlefield) && hasMergedCard()) {
|
||||
return getTopMergedCard().tokenCard;
|
||||
}
|
||||
return tokenCard;
|
||||
}
|
||||
public final void setTokenCard(boolean tokenC) {
|
||||
if (tokenCard = tokenC) { return; }
|
||||
tokenCard = tokenC;
|
||||
view.updateTokenCard(this);
|
||||
}
|
||||
|
||||
public final Card getCopiedPermanent() {
|
||||
return copiedPermanent;
|
||||
}
|
||||
|
||||
@@ -608,7 +608,7 @@ public final class CardPredicates {
|
||||
public static final Predicate<Card> NON_TOKEN = new Predicate<Card>() {
|
||||
@Override
|
||||
public boolean apply(Card c) {
|
||||
return !c.isToken();
|
||||
return !(c.isToken() || c.isTokenCard());
|
||||
}
|
||||
};
|
||||
/**
|
||||
@@ -617,7 +617,7 @@ public final class CardPredicates {
|
||||
public static final Predicate<Card> TOKEN = new Predicate<Card>() {
|
||||
@Override
|
||||
public boolean apply(Card c) {
|
||||
return c.isToken();
|
||||
return c.isToken() || c.isTokenCard();
|
||||
}
|
||||
};
|
||||
/**
|
||||
|
||||
@@ -1370,11 +1370,11 @@ public class CardProperty {
|
||||
return false;
|
||||
}
|
||||
} else if (property.startsWith("token")) {
|
||||
if (!card.isToken()) {
|
||||
if (!card.isToken() && !card.isTokenCard()) {
|
||||
return false;
|
||||
}
|
||||
} else if (property.startsWith("nonToken")) {
|
||||
if (card.isToken()) {
|
||||
if (card.isToken() || card.isTokenCard()) {
|
||||
return false;
|
||||
}
|
||||
} else if (property.startsWith("copiedSpell")) {
|
||||
|
||||
@@ -233,6 +233,9 @@ public class CardView extends GameEntityView {
|
||||
set(TrackableProperty.Token, c.isToken());
|
||||
}
|
||||
|
||||
public boolean isTokenCard() { return get(TrackableProperty.TokenCard); }
|
||||
void updateTokenCard(Card c) { set(TrackableProperty.TokenCard, c.isTokenCard()); }
|
||||
|
||||
public boolean isCommander() {
|
||||
return get(TrackableProperty.IsCommander);
|
||||
}
|
||||
|
||||
@@ -47,6 +47,7 @@ public enum TrackableProperty {
|
||||
Sickness(TrackableTypes.BooleanType),
|
||||
Tapped(TrackableTypes.BooleanType),
|
||||
Token(TrackableTypes.BooleanType),
|
||||
TokenCard(TrackableTypes.BooleanType),
|
||||
IsCommander(TrackableTypes.BooleanType),
|
||||
CommanderAltType(TrackableTypes.StringType),
|
||||
Damage(TrackableTypes.IntegerType),
|
||||
|
||||
Reference in New Issue
Block a user