YesOrNo choice can now be given to any player

This commit is contained in:
marcin.sciesinski
2020-03-26 08:10:46 -07:00
parent c1401d7d67
commit cf1beae8f0
3 changed files with 33 additions and 2 deletions

View File

@@ -6,6 +6,7 @@ import com.gempukku.lotro.cards.build.InvalidCardDefinitionException;
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.PlayerResolver;
import com.gempukku.lotro.logic.actions.CostToEffectAction;
import com.gempukku.lotro.logic.decisions.YesNoDecision;
import com.gempukku.lotro.logic.effects.PlayoutDecisionEffect;
@@ -15,7 +16,7 @@ import org.json.simple.JSONObject;
public class ChooseYesOrNo implements EffectAppenderProducer {
@Override
public EffectAppender createEffectAppender(JSONObject effectObject, CardGenerationEnvironment environment) throws InvalidCardDefinitionException {
FieldUtils.validateAllowedFields(effectObject, "text", "memorize", "yes", "no");
FieldUtils.validateAllowedFields(effectObject, "text", "player", "memorize", "yes", "no");
final String text = FieldUtils.getString(effectObject.get("text"), "text");
if (text == null)
@@ -23,11 +24,12 @@ public class ChooseYesOrNo implements EffectAppenderProducer {
final String memorize = FieldUtils.getString(effectObject.get("memorize"), "memorize");
final String yesAnswer = FieldUtils.getString(effectObject.get("yes"), "yes");
final String noAnswer = FieldUtils.getString(effectObject.get("no"), "no");
String player = FieldUtils.getString(effectObject.get("player"), "player", "you");
return new DelayedAppender() {
@Override
protected Effect createEffect(boolean cost, CostToEffectAction action, ActionContext actionContext) {
return new PlayoutDecisionEffect(actionContext.getPerformingPlayer(),
return new PlayoutDecisionEffect(player,
new YesNoDecision(text) {
@Override
protected void yes() {

View File

@@ -0,0 +1,28 @@
package com.gempukku.lotro.cards.build.field.effect.requirement;
import com.gempukku.lotro.cards.build.CardGenerationEnvironment;
import com.gempukku.lotro.cards.build.FilterableSource;
import com.gempukku.lotro.cards.build.InvalidCardDefinitionException;
import com.gempukku.lotro.cards.build.Requirement;
import com.gempukku.lotro.cards.build.field.FieldUtils;
import com.gempukku.lotro.common.Filterable;
import com.gempukku.lotro.filters.Filters;
import com.gempukku.lotro.game.PhysicalCard;
import org.json.simple.JSONObject;
import java.util.Collection;
public class MemoryIs implements RequirementProducer {
@Override
public Requirement getPlayRequirement(JSONObject object, CardGenerationEnvironment environment) throws InvalidCardDefinitionException {
FieldUtils.validateAllowedFields(object, "memory", "value");
final String memory = FieldUtils.getString(object.get("memory"), "memory");
final String value = FieldUtils.getString(object.get("value"), "value");
return (actionContext) -> {
String valueFromMemory = actionContext.getValueFromMemory(memory);
return valueFromMemory != null && valueFromMemory.equals(value);
};
}
}

View File

@@ -28,6 +28,7 @@ public class RequirementFactory {
requirementProducers.put("phase", new PhaseRequirement());
requirementProducers.put("ringisactive", new RingIsActive());
requirementProducers.put("memorymatches", new MemoryMatches());
requirementProducers.put("memoryis", new MemoryIs());
requirementProducers.put("cantspotfpcultures", new CantSpotFPCultures());
requirementProducers.put("haveinitiative", new HaveInitiative());
requirementProducers.put("fierceskirmish", new FierceSkirmish());