Fixing naming conventions to be somewhat more specific with this family of effects

This commit is contained in:
Christian 'ketura' McCarty
2022-07-22 11:29:06 -05:00
parent 1b14044ca9
commit 9977776a85
13 changed files with 123 additions and 12 deletions

View File

@@ -86,7 +86,7 @@
"memorize": "playedUrukHai"
},
"effect": {
"type": "putCardsFromDiscardOnBottomOfDrawDeck",
"type": "putCardsFromDiscardOnBottomOfDeck",
"filter": "all(nameFromMemory(playedUrukHai))"
}
}

View File

@@ -413,7 +413,7 @@
"filter": "self"
},
"effect": {
"type": "putCardsFromDiscardOnBottomOfDrawDeck",
"type": "putCardsFromDiscardOnBottomOfDeck",
"filter": "choose(culture(moria),orc)"
}
}

View File

@@ -103,7 +103,7 @@
"filter": "memory(chosenCard)"
},
{
"type": "putCardsFromDiscardOnBottomOfDrawDeck",
"type": "putCardsFromDiscardOnBottomOfDeck",
"filter": "memory(chosenCard)"
}
]

View File

@@ -555,7 +555,7 @@
"filter": "choose(culture(dwarven),follower)"
},
"effect": {
"type": "putCardsFromDiscardOnBottomOfDrawDeck",
"type": "putCardsFromDiscardOnBottomOfDeck",
"filter": "choose(culture(dwarven),artifact)"
}
}

View File

@@ -538,7 +538,7 @@
"filter": "self"
},
"effect": {
"type": "putCardsFromDiscardOnBottomOfDrawDeck",
"type": "putCardsFromDiscardOnBottomOfDeck",
"filter": "choose(orc)",
"count": {
"type": "condition",

View File

@@ -137,7 +137,7 @@
"filter": "choose(name(Balin))"
},
{
"type": "putCardsFromDiscardOnBottomOfDrawDeck",
"type": "putCardsFromDiscardOnBottomOfDeck",
"count": 2
}
]

View File

@@ -212,7 +212,7 @@
"filter": "self"
},
"effect": {
"type": "putCardsFromDiscardOnBottomOfDrawDeck",
"type": "putCardsFromDiscardOnBottomOfDeck",
"filter": "choose(orc)"
}
},

View File

@@ -94,9 +94,11 @@ public class EffectAppenderFactory {
effectAppenderProducers.put("preventheal", new PreventCardEffectAppender());
effectAppenderProducers.put("preventwound", new PreventWound());
effectAppenderProducers.put("putcardsfromdeckintohand", new PutCardsFromDeckIntoHand());
effectAppenderProducers.put("putcardsfromdeckontopofdeck", new PutCardsFromDeckOnTopOfDeck());
effectAppenderProducers.put("putcardsfromdeckonbottomofdeck", new PutCardsFromDeckOnBottomOfDeck());
effectAppenderProducers.put("putcardsfromdiscardintohand", new PutCardsFromDiscardIntoHand());
effectAppenderProducers.put("putcardsfromdiscardonbottomofdrawdeck", new PutCardsFromDiscardOnBottomOfDrawDeck());
effectAppenderProducers.put("putcardsfromdiscardontopofdrawdeck", new PutCardsFromDiscardOnTopOfDrawDeck());
effectAppenderProducers.put("putcardsfromdiscardonbottomofdeck", new PutCardsFromDiscardOnBottomOfDeck());
effectAppenderProducers.put("putcardsfromdiscardontopofdeck", new PutCardsFromDiscardOnTopOfDeck());
effectAppenderProducers.put("putcardsfromhandonbottomofdeck", new PutCardsFromHandOnBottomOfDeck());
effectAppenderProducers.put("putcardsfromhandontopofdeck", new PutCardsFromHandOnTopOfDeck());
effectAppenderProducers.put("putcardsfromplayonbottomofdeck", new PutCardsFromPlayOnBottomOfDeck());

View File

@@ -61,7 +61,7 @@ public class PlayCardFromDrawDeck implements EffectAppenderProducer {
final CostToEffectAction playCardAction = PlayUtils.getPlayCardAction(actionContext.getGame(), cardsToPlay.iterator().next(), costModifier, onFilterable, false);
return new StackActionEffect(playCardAction);
} else {
return null;
return null; //Fix Wizard is Never Late by changing this to a DoNothingEffect?
}
}

View File

@@ -0,0 +1,54 @@
package com.gempukku.lotro.cards.build.field.effect.appender;
import com.gempukku.lotro.cards.build.ActionContext;
import com.gempukku.lotro.cards.build.CardGenerationEnvironment;
import com.gempukku.lotro.cards.build.InvalidCardDefinitionException;
import com.gempukku.lotro.cards.build.ValueSource;
import com.gempukku.lotro.cards.build.field.FieldUtils;
import com.gempukku.lotro.cards.build.field.effect.EffectAppender;
import com.gempukku.lotro.cards.build.field.effect.EffectAppenderProducer;
import com.gempukku.lotro.cards.build.field.effect.appender.resolver.CardResolver;
import com.gempukku.lotro.cards.build.field.effect.appender.resolver.ValueResolver;
import com.gempukku.lotro.game.PhysicalCard;
import com.gempukku.lotro.logic.actions.CostToEffectAction;
import com.gempukku.lotro.logic.effects.PutCardFromDeckIntoHandEffect;
import com.gempukku.lotro.logic.effects.PutCardFromDeckOnBottomOfDeckEffect;
import com.gempukku.lotro.logic.effects.PutCardFromDeckOnTopOfDeckEffect;
import com.gempukku.lotro.logic.effects.ShuffleDeckEffect;
import com.gempukku.lotro.logic.timing.Effect;
import org.json.simple.JSONObject;
import java.util.Collection;
import java.util.LinkedList;
import java.util.List;
public class PutCardsFromDeckOnBottomOfDeck implements EffectAppenderProducer {
@Override
public EffectAppender createEffectAppender(JSONObject effectObject, CardGenerationEnvironment environment) throws InvalidCardDefinitionException {
FieldUtils.validateAllowedFields(effectObject, "count", "filter");
final ValueSource valueSource = ValueResolver.resolveEvaluator(effectObject.get("count"), 1, environment);
final String filter = FieldUtils.getString(effectObject.get("filter"), "filter", "choose(any)");
MultiEffectAppender result = new MultiEffectAppender();
result.addEffectAppender(
CardResolver.resolveCardsInDeck(filter, null, valueSource, "_temp", "you", "Choose cards from deck", environment));
result.addEffectAppender(
new DelayedAppender() {
@Override
protected List<? extends Effect> createEffects(boolean cost, CostToEffectAction action, ActionContext actionContext) {
final Collection<? extends PhysicalCard> cards = actionContext.getCardsFromMemory("_temp");
List<Effect> result = new LinkedList<>();
for (PhysicalCard card : cards) {
result.add(new PutCardFromDeckOnBottomOfDeckEffect(action.getActionSource(), card));
}
return result;
}
});
return result;
}
}

View File

@@ -0,0 +1,55 @@
package com.gempukku.lotro.cards.build.field.effect.appender;
import com.gempukku.lotro.cards.build.ActionContext;
import com.gempukku.lotro.cards.build.CardGenerationEnvironment;
import com.gempukku.lotro.cards.build.InvalidCardDefinitionException;
import com.gempukku.lotro.cards.build.ValueSource;
import com.gempukku.lotro.cards.build.field.FieldUtils;
import com.gempukku.lotro.cards.build.field.effect.EffectAppender;
import com.gempukku.lotro.cards.build.field.effect.EffectAppenderProducer;
import com.gempukku.lotro.cards.build.field.effect.appender.resolver.CardResolver;
import com.gempukku.lotro.cards.build.field.effect.appender.resolver.ValueResolver;
import com.gempukku.lotro.game.PhysicalCard;
import com.gempukku.lotro.logic.actions.CostToEffectAction;
import com.gempukku.lotro.logic.effects.PutCardFromDeckIntoHandEffect;
import com.gempukku.lotro.logic.effects.PutCardFromDeckOnTopOfDeckEffect;
import com.gempukku.lotro.logic.effects.PutCardsFromDeckOnTopOfDrawDeckEffect;
import com.gempukku.lotro.logic.effects.ShuffleDeckEffect;
import com.gempukku.lotro.logic.timing.Effect;
import org.json.simple.JSONObject;
import java.util.Collection;
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
public class PutCardsFromDeckOnTopOfDeck implements EffectAppenderProducer {
@Override
public EffectAppender createEffectAppender(JSONObject effectObject, CardGenerationEnvironment environment) throws InvalidCardDefinitionException {
FieldUtils.validateAllowedFields(effectObject, "count", "filter");
final ValueSource valueSource = ValueResolver.resolveEvaluator(effectObject.get("count"), 1, environment);
final String filter = FieldUtils.getString(effectObject.get("filter"), "filter", "choose(any)");
MultiEffectAppender result = new MultiEffectAppender();
result.addEffectAppender(
CardResolver.resolveCardsInDeck(filter, null, valueSource, "_temp", "you", "Choose cards from deck", environment));
result.addEffectAppender(
new DelayedAppender() {
@Override
protected List<? extends Effect> createEffects(boolean cost, CostToEffectAction action, ActionContext actionContext) {
final Collection<? extends PhysicalCard> cards = actionContext.getCardsFromMemory("_temp");
List<Effect> result = new LinkedList<>();
for (PhysicalCard card : cards) {
result.add(new PutCardFromDeckOnTopOfDeckEffect(action.getActionSource(), card));
}
return result;
}
});
return result;
}
}

View File

@@ -19,7 +19,7 @@ import java.util.Collection;
import java.util.LinkedList;
import java.util.List;
public class PutCardsFromDiscardOnBottomOfDrawDeck implements EffectAppenderProducer {
public class PutCardsFromDiscardOnBottomOfDeck implements EffectAppenderProducer {
@Override
public EffectAppender createEffectAppender(JSONObject effectObject, CardGenerationEnvironment environment) throws InvalidCardDefinitionException {
FieldUtils.validateAllowedFields(effectObject, "count", "filter");

View File

@@ -19,7 +19,7 @@ import java.util.Collection;
import java.util.LinkedList;
import java.util.List;
public class PutCardsFromDiscardOnTopOfDrawDeck implements EffectAppenderProducer {
public class PutCardsFromDiscardOnTopOfDeck implements EffectAppenderProducer {
@Override
public EffectAppender createEffectAppender(JSONObject effectObject, CardGenerationEnvironment environment) throws InvalidCardDefinitionException {
FieldUtils.validateAllowedFields(effectObject, "count", "filter");