Fixed Second Edition missing cards and images and extracted toil payment.
This commit is contained in:
@@ -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',
|
||||
|
||||
@@ -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));
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -154,4 +154,6 @@ public interface ModifiersQuerying {
|
||||
public boolean canPlaySite(GameState gameState, String playerId);
|
||||
|
||||
int getSanctuaryHealModifier(GameState gameState);
|
||||
|
||||
int getPotentialDiscount(GameState gameState, PhysicalCard playedCard);
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user