Fixed cards using RevealCards not actually working, as that *only* works when revealing cards from play (rather useless)

This commit is contained in:
Christian 'ketura' McCarty
2025-04-23 22:26:27 -05:00
parent 0dfe74cde3
commit f3fa33658c
6 changed files with 98 additions and 4 deletions

View File

@@ -167,7 +167,7 @@
text: Choose card to reveal and put beneath your deck
}
{
type: revealCards
type: RevealCardsFromDiscard
select: memory(chosenCard)
}
{

View File

@@ -34,7 +34,7 @@
memory: topCards
}
{
type: RevealCards
type: RevealCardsFromDrawDeck
select: memory(topCards)
count: memory(cardCount)
}

View File

@@ -162,7 +162,9 @@ public class EffectAppenderFactory {
effectAppenderProducers.put("resetwhileinzonedata", new ResetWhileInZoneData());
effectAppenderProducers.put("returntohand", new ReturnToHand());
effectAppenderProducers.put("revealbottomcardsofdrawdeck", new RevealBottomCardsOfDrawDeck());
effectAppenderProducers.put("revealcards", new RevealCards());
effectAppenderProducers.put("revealcards", new RevealCardsFromPlay());
effectAppenderProducers.put("revealcardsfromdiscard", new RevealCardsFromDiscard());
effectAppenderProducers.put("revealcardsfromdeck", new RevealCardsFromDrawDeck());
effectAppenderProducers.put("revealcardsfromadventuredeck", new RevealCardsFromAdventureDeck());
effectAppenderProducers.put("revealcardsfromhand", new RevealCardsFromHand());
effectAppenderProducers.put("revealhand", new RevealHand());

View File

@@ -0,0 +1,46 @@
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.RevealCardEffect;
import com.gempukku.lotro.logic.timing.Effect;
import org.json.simple.JSONObject;
import java.util.Collection;
public class RevealCardsFromDiscard implements EffectAppenderProducer {
@Override
public EffectAppender createEffectAppender(boolean cost, JSONObject effectObject, CardGenerationEnvironment environment) throws InvalidCardDefinitionException {
FieldUtils.validateAllowedFields(effectObject, "count", "select", "memorize");
final String select = FieldUtils.getString(effectObject.get("select"), "select", "choose(any)");
final String memorize = FieldUtils.getString(effectObject.get("memorize"), "memorize", "_temp");
final ValueSource countSource = ValueResolver.resolveEvaluator(effectObject.get("count"), 1, environment);
MultiEffectAppender result = new MultiEffectAppender();
result.addEffectAppender(
CardResolver.resolveCardsInDiscard(select, countSource, memorize, "you", "Choose cards to reveal", environment));
result.addEffectAppender(
new DelayedAppender() {
@Override
protected Effect createEffect(boolean cost, CostToEffectAction action, ActionContext actionContext) {
final Collection<? extends PhysicalCard> cardsToReveal = actionContext.getCardsFromMemory(memorize);
return new RevealCardEffect(actionContext.getSource(), cardsToReveal);
}
});
return result;
}
}

View File

@@ -0,0 +1,46 @@
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.RevealCardEffect;
import com.gempukku.lotro.logic.timing.Effect;
import org.json.simple.JSONObject;
import java.util.Collection;
public class RevealCardsFromDrawDeck implements EffectAppenderProducer {
@Override
public EffectAppender createEffectAppender(boolean cost, JSONObject effectObject, CardGenerationEnvironment environment) throws InvalidCardDefinitionException {
FieldUtils.validateAllowedFields(effectObject, "count", "select", "memorize");
final String select = FieldUtils.getString(effectObject.get("select"), "select", "choose(any)");
final String memorize = FieldUtils.getString(effectObject.get("memorize"), "memorize", "_temp");
final ValueSource countSource = ValueResolver.resolveEvaluator(effectObject.get("count"), 1, environment);
MultiEffectAppender result = new MultiEffectAppender();
result.addEffectAppender(
CardResolver.resolveCardsInDeck(select, null, countSource, memorize, "you", "you",false, "Choose cards to reveal", environment));
result.addEffectAppender(
new DelayedAppender() {
@Override
protected Effect createEffect(boolean cost, CostToEffectAction action, ActionContext actionContext) {
final Collection<? extends PhysicalCard> cardsToReveal = actionContext.getCardsFromMemory(memorize);
return new RevealCardEffect(actionContext.getSource(), cardsToReveal);
}
});
return result;
}
}

View File

@@ -17,7 +17,7 @@ import org.json.simple.JSONObject;
import java.util.Collection;
public class RevealCards implements EffectAppenderProducer {
public class RevealCardsFromPlay implements EffectAppenderProducer {
@Override
public EffectAppender createEffectAppender(boolean cost, JSONObject effectObject, CardGenerationEnvironment environment) throws InvalidCardDefinitionException {
FieldUtils.validateAllowedFields(effectObject, "count", "select", "memorize");