Fixed Second Edition missing cards and images and extracted toil payment.

This commit is contained in:
marcin.sciesinski
2019-08-08 17:51:48 -07:00
parent 08562227c5
commit 9db793212b
10 changed files with 124 additions and 65 deletions

View File

@@ -144,7 +144,7 @@ var set40 = {
'40_143': 'http://lotrtcgwiki.com/images/2E1C143.jpg',
'40_144': 'http://lotrtcgwiki.com/images/2E1U144.jpg',
'40_145': 'http://lotrtcgwiki.com/images/2E1U145.jpg',
'40_146': 'http://lotrtcgwiki.com/images/2E1R146.jpg',
'40_146': 'http://lotrtcgwiki.com/images/2E1C146.jpg',
'40_147': 'http://lotrtcgwiki.com/images/2E1C147.jpg',
'40_148': 'http://lotrtcgwiki.com/images/2E1R148.jpg',
'40_149': 'http://lotrtcgwiki.com/images/2E1U149.jpg',
@@ -195,7 +195,7 @@ var set40 = {
'40_194': 'http://lotrtcgwiki.com/images/2E1U194.jpg',
'40_195': 'http://lotrtcgwiki.com/images/2E1R195.jpg',
'40_196': 'http://lotrtcgwiki.com/images/2E1R196.jpg',
'40_197': 'http://lotrtcgwiki.com/images/2E1R197.jpg',
'40_197': 'http://lotrtcgwiki.com/images/2E1U197.jpg',
'40_198': 'http://lotrtcgwiki.com/images/2E1U198.jpg',
'40_199': 'http://lotrtcgwiki.com/images/2E1U199.jpg',
'40_200': 'http://lotrtcgwiki.com/images/2E1R200.jpg',
@@ -250,12 +250,12 @@ var set40 = {
'40_249': 'http://lotrtcgwiki.com/images/2E1R249.jpg',
'40_250': 'http://lotrtcgwiki.com/images/2E1U250.jpg',
'40_251': 'http://lotrtcgwiki.com/images/2E1U251.jpg',
'40_252': 'http://lotrtcgwiki.com/images/2E1U252.jpg',
'40_252': 'http://lotrtcgwiki.com/images/2E1R252.jpg',
'40_253': 'http://lotrtcgwiki.com/images/2E1C253.jpg',
'40_254': 'http://lotrtcgwiki.com/images/2E1C254.jpg',
'40_255': 'http://lotrtcgwiki.com/images/2E1C255.jpg',
'40_256': 'http://lotrtcgwiki.com/images/2E1C256.jpg',
'40_257': 'http://lotrtcgwiki.com/images/2E1U257.jpg',
'40_257': 'http://lotrtcgwiki.com/images/2E1R257.jpg',
'40_258': 'http://lotrtcgwiki.com/images/2E1U258.jpg',
'40_259': 'http://lotrtcgwiki.com/images/2E1C259.jpg',
'40_260': 'http://lotrtcgwiki.com/images/2E1C260.jpg',
@@ -284,7 +284,7 @@ var set40 = {
'40_283': 'http://lotrtcgwiki.com/images/2E1U283.jpg',
'40_284': 'http://lotrtcgwiki.com/images/2E1U284.jpg',
'40_285': 'http://lotrtcgwiki.com/images/2E1U285.jpg',
'40_286': 'http://lotrtcgwiki.com/images/2E1U286.jpg',
'40_286': 'http://lotrtcgwiki.com/images/2E1C286.jpg',
'40_287': 'http://lotrtcgwiki.com/images/2E1U287.jpg',
'40_288': 'http://lotrtcgwiki.com/images/2E1U288.jpg',
'40_289': 'http://lotrtcgwiki.com/images/2E1U289.jpg',

View File

@@ -45,9 +45,8 @@ public abstract class AbstractLotroCardBlueprint implements LotroCardBlueprint {
if (!game.getModifiersQuerying().canPayExtraCostsToPlay(game.getGameState(), self))
return false;
int toilCount = game.getModifiersQuerying().getKeywordCount(game.getGameState(), self, Keyword.TOIL);
if (toilCount > 0)
twilightModifier -= toilCount * Filters.countActive(game.getGameState(), game.getModifiersQuerying(), Filters.owner(playerId), getCulture(), Filters.character, Filters.canExert(self));
twilightModifier-= game.getModifiersQuerying().getPotentialDiscount(game.getGameState(), self);
return (getSide() != Side.SHADOW || PlayConditions.canPayForShadowCard(game, self, withTwilightRemoved, twilightModifier, ignoreRoamingPenalty));
}

View File

@@ -32,6 +32,7 @@
40S32
40S33
40S34
40S35
40S36
40S37
40S38
@@ -111,12 +112,14 @@
40S112
40S113
40S114
40S115
40S116
40S117
40S118
40S119
40S120
40S121
40S122
40S123
40S124
40S125
@@ -232,6 +235,7 @@
40S235
40S236
40S237
40S238
40S239
40S240
40S241
@@ -275,6 +279,7 @@
40S279
40S280
40S281
40S282
40S283
40S284
40S285
@@ -289,6 +294,7 @@
40S294
40S295
40S296
40S297
40S298
40S299
40S300

View File

@@ -378,4 +378,9 @@ public abstract class AbstractModifier implements Modifier {
public int getSanctuaryHealModifier(GameState gameState, ModifiersQuerying modifiersQuerying) {
return 0;
}
@Override
public int getPotentialDiscount(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard discountCard) {
return 0;
}
}

View File

@@ -151,4 +151,6 @@ public interface Modifier {
public int getFPCulturesSpotCountModifier(GameState gameState, ModifiersQuerying modifiersQuerying, String playerId);
int getSanctuaryHealModifier(GameState gameState, ModifiersQuerying modifiersQuerying);
int getPotentialDiscount(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard discountCard);
}

View File

@@ -22,5 +22,5 @@ public enum ModifierEffect {
REMOVE_KEYWORD_MODIFIER, GIVE_KEYWORD_MODIFIER, CANCEL_KEYWORD_BONUS_TARGET_MODIFIER, LOSE_ALL_KEYWORDS_MODIFIER,
SANCTUARY_HEAL_MODIFIER
SANCTUARY_HEAL_MODIFIER, POTENTIAL_DISCOUNT_MODIFIER
}

View File

@@ -1070,6 +1070,16 @@ public class ModifiersLogic implements ModifiersEnvironment, ModifiersQuerying {
return result;
}
@Override
public int getPotentialDiscount(GameState gameState, PhysicalCard playedCard) {
int result = 0;
for (Modifier modifier : getModifiers(gameState, ModifierEffect.POTENTIAL_DISCOUNT_MODIFIER)) {
result+=modifier.getPotentialDiscount(gameState, this, playedCard);
}
return result;
}
private class ModifierHookImpl implements ModifierHook {
private Modifier _modifier;

View File

@@ -154,4 +154,6 @@ public interface ModifiersQuerying {
public boolean canPlaySite(GameState gameState, String playerId);
int getSanctuaryHealModifier(GameState gameState);
int getPotentialDiscount(GameState gameState, PhysicalCard playedCard);
}

View File

@@ -1,56 +1,46 @@
package com.gempukku.lotro.logic.timing;
import com.gempukku.lotro.game.state.LotroGame;
import com.gempukku.lotro.game.state.actions.DefaultActionsEnvironment;
import com.gempukku.lotro.logic.modifiers.ModifiersLogic;
import com.gempukku.lotro.logic.timing.rules.AmbushRule;
import com.gempukku.lotro.logic.timing.rules.CunningRule;
import com.gempukku.lotro.logic.timing.rules.DiscardedCardRule;
import com.gempukku.lotro.logic.timing.rules.EnduringRule;
import com.gempukku.lotro.logic.timing.rules.FrodoAndSamRule;
import com.gempukku.lotro.logic.timing.rules.HunterRule;
import com.gempukku.lotro.logic.timing.rules.KilledCardRule;
import com.gempukku.lotro.logic.timing.rules.MusterRule;
import com.gempukku.lotro.logic.timing.rules.ResolveSkirmishRule;
import com.gempukku.lotro.logic.timing.rules.RingBearerRule;
import com.gempukku.lotro.logic.timing.rules.RoamingRule;
import com.gempukku.lotro.logic.timing.rules.SanctuaryRule;
import com.gempukku.lotro.logic.timing.rules.ThreatRule;
public class RuleSet {
private LotroGame _game;
private DefaultActionsEnvironment _actionsEnvironment;
private ModifiersLogic _modifiersLogic;
public RuleSet(LotroGame game, DefaultActionsEnvironment actionsEnvironment, ModifiersLogic modifiersLogic) {
_game = game;
_actionsEnvironment = actionsEnvironment;
_modifiersLogic = modifiersLogic;
}
public void applyRuleSet() {
new RoamingRule(_modifiersLogic).applyRule();
new EnduringRule(_modifiersLogic).applyRule();
new HunterRule(_modifiersLogic).applyRule();
new MusterRule(_actionsEnvironment).applyRule();
new AmbushRule(_actionsEnvironment).applyRule();
new ResolveSkirmishRule(_game, _actionsEnvironment).applyRule();
new SanctuaryRule(_actionsEnvironment, _modifiersLogic).applyRule();
new DiscardedCardRule(_actionsEnvironment).applyRule();
new KilledCardRule(_actionsEnvironment).applyRule();
new FrodoAndSamRule(_modifiersLogic).applyRule();
new RingBearerRule(_modifiersLogic).applyRule();
new ThreatRule(_actionsEnvironment).applyRule();
new CunningRule(_modifiersLogic).applyRule();
}
}
package com.gempukku.lotro.logic.timing;
import com.gempukku.lotro.game.state.LotroGame;
import com.gempukku.lotro.game.state.actions.DefaultActionsEnvironment;
import com.gempukku.lotro.logic.modifiers.ModifiersLogic;
import com.gempukku.lotro.logic.timing.rules.*;
public class RuleSet {
private LotroGame _game;
private DefaultActionsEnvironment _actionsEnvironment;
private ModifiersLogic _modifiersLogic;
public RuleSet(LotroGame game, DefaultActionsEnvironment actionsEnvironment, ModifiersLogic modifiersLogic) {
_game = game;
_actionsEnvironment = actionsEnvironment;
_modifiersLogic = modifiersLogic;
}
public void applyRuleSet() {
new RoamingRule(_modifiersLogic).applyRule();
new EnduringRule(_modifiersLogic).applyRule();
new HunterRule(_modifiersLogic).applyRule();
new MusterRule(_actionsEnvironment).applyRule();
new AmbushRule(_actionsEnvironment).applyRule();
new ResolveSkirmishRule(_game, _actionsEnvironment).applyRule();
new SanctuaryRule(_actionsEnvironment, _modifiersLogic).applyRule();
new DiscardedCardRule(_actionsEnvironment).applyRule();
new KilledCardRule(_actionsEnvironment).applyRule();
new FrodoAndSamRule(_modifiersLogic).applyRule();
new RingBearerRule(_modifiersLogic).applyRule();
new ThreatRule(_actionsEnvironment).applyRule();
new CunningRule(_modifiersLogic).applyRule();
new ToilRule(_modifiersLogic).applyRule();
}
}

View File

@@ -0,0 +1,45 @@
package com.gempukku.lotro.logic.timing.rules;
import com.gempukku.lotro.common.CardType;
import com.gempukku.lotro.common.Keyword;
import com.gempukku.lotro.filters.Filters;
import com.gempukku.lotro.game.AbstractActionProxy;
import com.gempukku.lotro.game.PhysicalCard;
import com.gempukku.lotro.game.state.GameState;
import com.gempukku.lotro.game.state.LotroGame;
import com.gempukku.lotro.game.state.actions.DefaultActionsEnvironment;
import com.gempukku.lotro.logic.GameUtils;
import com.gempukku.lotro.logic.actions.OptionalTriggerAction;
import com.gempukku.lotro.logic.effects.AddTwilightEffect;
import com.gempukku.lotro.logic.modifiers.AbstractModifier;
import com.gempukku.lotro.logic.modifiers.ModifierEffect;
import com.gempukku.lotro.logic.modifiers.ModifiersLogic;
import com.gempukku.lotro.logic.modifiers.ModifiersQuerying;
import com.gempukku.lotro.logic.timing.EffectResult;
import com.gempukku.lotro.logic.timing.results.AssignAgainstResult;
import java.util.Collections;
import java.util.List;
public class ToilRule {
private ModifiersLogic modifiersLogic;
public ToilRule(ModifiersLogic modifiersLogic) {
this.modifiersLogic = modifiersLogic;
}
public void applyRule() {
modifiersLogic.addAlwaysOnModifier(
new AbstractModifier(null, "Toil discount", Filters.any, ModifierEffect.POTENTIAL_DISCOUNT_MODIFIER) {
@Override
public int getPotentialDiscount(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard discountCard) {
int toilCount = modifiersQuerying.getKeywordCount(gameState, discountCard, Keyword.TOIL);
if (toilCount > 0)
return toilCount * Filters.countActive(gameState, modifiersQuerying, Filters.owner(discountCard.getOwner()),
discountCard.getBlueprint().getCulture(), Filters.character, Filters.canExert(discountCard));
return 0;
}
});
}
}