mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-12 16:58:57 +00:00
MakeCardEffect.resolve allow for multiple "DefinedName"
This commit is contained in:
@@ -1,10 +1,11 @@
|
||||
package forge.game.ability.effects;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import com.google.common.collect.Lists;
|
||||
import forge.StaticData;
|
||||
import forge.card.ICardFace;
|
||||
import forge.game.Game;
|
||||
@@ -34,18 +35,23 @@ public class MakeCardEffect extends SpellAbilityEffect {
|
||||
for (final Player player : players) {
|
||||
final Game game = player.getGame();
|
||||
|
||||
String name = sa.getParamOrDefault("Name", "");
|
||||
if (name.equals("ChosenName")) {
|
||||
if (sa.getHostCard().hasChosenName()) {
|
||||
name = sa.getHostCard().getChosenName();
|
||||
List<String> names = Lists.newArrayList();
|
||||
if (sa.hasParam("Name")) {
|
||||
final String n = sa.getParam("Name");
|
||||
if (n.equals("ChosenName")) {
|
||||
if (source.hasChosenName()) {
|
||||
names.add(source.getChosenName());
|
||||
} else {
|
||||
continue;
|
||||
names.add(n);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (sa.hasParam("DefinedName")) {
|
||||
final CardCollection def = AbilityUtils.getDefinedCards(source, sa.getParam("DefinedName"), sa);
|
||||
if (def.size() > 0) {
|
||||
name = def.getFirst().getName();
|
||||
for (final Card c : def) {
|
||||
names.add(c.getName());
|
||||
}
|
||||
}
|
||||
} else if (sa.hasParam("Spellbook")) {
|
||||
List<String> spellbook = Arrays.asList(sa.getParam("Spellbook").split(","));
|
||||
@@ -56,27 +62,33 @@ public class MakeCardEffect extends SpellAbilityEffect {
|
||||
faces.add(StaticData.instance().getCommonCards().getFaceByName(s));
|
||||
}
|
||||
if (sa.hasParam("AtRandom")) {
|
||||
name = Aggregates.random(faces).getName();
|
||||
names.add(Aggregates.random(faces).getName());
|
||||
} else {
|
||||
name = player.getController().chooseCardName(sa, faces,
|
||||
Localizer.getInstance().getMessage("lblChooseFromSpellbook", CardTranslation.getTranslatedName(source.getName())));
|
||||
names.add(player.getController().chooseCardName(sa, faces,
|
||||
Localizer.getInstance().getMessage("lblChooseFromSpellbook",
|
||||
CardTranslation.getTranslatedName(source.getName()))));
|
||||
}
|
||||
}
|
||||
final ZoneType zone = ZoneType.smartValueOf(sa.getParamOrDefault("Zone", "Library"));
|
||||
int amount = sa.hasParam("Amount") ?
|
||||
AbilityUtils.calculateAmount(sa.getHostCard(), sa.getParam("Amount"), sa) : 1;
|
||||
final int amount = sa.hasParam("Amount") ?
|
||||
AbilityUtils.calculateAmount(source, sa.getParam("Amount"), sa) : 1;
|
||||
|
||||
CardCollection cards = new CardCollection();
|
||||
|
||||
for (final String name : names) {
|
||||
int toMake = amount;
|
||||
if (!name.equals("")) {
|
||||
while (amount > 0) {
|
||||
Card card = Card.fromPaperCard(StaticData.instance().getCommonCards().getUniqueByName(name), player);
|
||||
while (toMake > 0) {
|
||||
Card card = Card.fromPaperCard(StaticData.instance().getCommonCards().getUniqueByName(name),
|
||||
player);
|
||||
if (sa.hasParam("TokenCard")) {
|
||||
card.setTokenCard(true);
|
||||
}
|
||||
game.getAction().moveTo(ZoneType.None, card, sa, moveParams);
|
||||
cards.add(card);
|
||||
amount--;
|
||||
toMake--;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
final CardZoneTable triggerList = new CardZoneTable();
|
||||
@@ -84,10 +96,10 @@ public class MakeCardEffect extends SpellAbilityEffect {
|
||||
Card made = game.getAction().moveTo(zone, c, sa, moveParams);
|
||||
triggerList.put(ZoneType.None, made.getZone().getZoneType(), made);
|
||||
if (sa.hasParam("RememberMade")) {
|
||||
sa.getHostCard().addRemembered(made);
|
||||
source.addRemembered(made);
|
||||
}
|
||||
if (sa.hasParam("ImprintMade")) {
|
||||
sa.getHostCard().addImprintedCard(made);
|
||||
source.addImprintedCard(made);
|
||||
}
|
||||
}
|
||||
triggerList.triggerChangesZoneAll(game, sa);
|
||||
@@ -96,5 +108,4 @@ public class MakeCardEffect extends SpellAbilityEffect {
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user