"Phial of Galadriel"
This commit is contained in:
@@ -0,0 +1,22 @@
|
||||
package com.gempukku.lotro.cards.modifiers;
|
||||
|
||||
import com.gempukku.lotro.filters.Filter;
|
||||
import com.gempukku.lotro.game.PhysicalCard;
|
||||
import com.gempukku.lotro.game.state.GameState;
|
||||
import com.gempukku.lotro.logic.modifiers.AbstractModifier;
|
||||
import com.gempukku.lotro.logic.modifiers.ModifierEffect;
|
||||
import com.gempukku.lotro.logic.modifiers.ModifiersQuerying;
|
||||
|
||||
public class ResistanceModifier extends AbstractModifier {
|
||||
private int _modifier;
|
||||
|
||||
public ResistanceModifier(PhysicalCard source, Filter affectFilter, int modifier) {
|
||||
super(source, "Resistance " + ((modifier < 0) ? modifier : ("+" + modifier)), affectFilter, new ModifierEffect[]{ModifierEffect.RESISTANCE_MODIFIER});
|
||||
_modifier = modifier;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getResistance(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard physicalCard, int result) {
|
||||
return result + _modifier;
|
||||
}
|
||||
}
|
||||
@@ -2,6 +2,7 @@ package com.gempukku.lotro.cards.set3.elven;
|
||||
|
||||
import com.gempukku.lotro.cards.AbstractAttachableFPPossession;
|
||||
import com.gempukku.lotro.cards.effects.ChooseAndDiscardCardsFromHandEffect;
|
||||
import com.gempukku.lotro.common.CardType;
|
||||
import com.gempukku.lotro.common.Culture;
|
||||
import com.gempukku.lotro.common.Keyword;
|
||||
import com.gempukku.lotro.common.Phase;
|
||||
@@ -29,7 +30,7 @@ import java.util.List;
|
||||
*/
|
||||
public class Card3_023 extends AbstractAttachableFPPossession {
|
||||
public Card3_023() {
|
||||
super(0, 0, 1, Culture.ELVEN, Keyword.RING, "Nenya", true);
|
||||
super(0, 0, 1, Culture.ELVEN, CardType.ARTIFACT, Keyword.RING, "Nenya", true);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -0,0 +1,47 @@
|
||||
package com.gempukku.lotro.cards.set3.elven;
|
||||
|
||||
import com.gempukku.lotro.cards.AbstractAttachableFPPossession;
|
||||
import com.gempukku.lotro.cards.PlayConditions;
|
||||
import com.gempukku.lotro.cards.modifiers.ResistanceModifier;
|
||||
import com.gempukku.lotro.common.Culture;
|
||||
import com.gempukku.lotro.common.Keyword;
|
||||
import com.gempukku.lotro.common.Race;
|
||||
import com.gempukku.lotro.filters.Filter;
|
||||
import com.gempukku.lotro.filters.Filters;
|
||||
import com.gempukku.lotro.game.PhysicalCard;
|
||||
import com.gempukku.lotro.game.state.LotroGame;
|
||||
import com.gempukku.lotro.logic.modifiers.Modifier;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Set: Realms of Elf-lords
|
||||
* Side: Free
|
||||
* Culture: Elven
|
||||
* Twilight Cost: 0
|
||||
* Type: Possession
|
||||
* Game Text: To play, exert an Elf. Bearer must be the Ring-bearer. Bearer's resistance is +2.
|
||||
*/
|
||||
public class Card3_024 extends AbstractAttachableFPPossession {
|
||||
public Card3_024() {
|
||||
super(0, 0, 0, Culture.ELVEN, null, "Phial of Galadriel", true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean checkPlayRequirements(String playerId, LotroGame game, PhysicalCard self, Filter additionalAttachmentFilter, int twilightModifier) {
|
||||
return super.checkPlayRequirements(playerId, game, self, additionalAttachmentFilter, twilightModifier)
|
||||
&& PlayConditions.canExert(self, game.getGameState(), game.getModifiersQuerying(), Filters.race(Race.ELF));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Filter getValidTargetFilter(String playerId, LotroGame game, PhysicalCard self) {
|
||||
return Filters.keyword(Keyword.RING_BEARER);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected List<? extends Modifier> getNonBasicStatsModifiers(PhysicalCard self) {
|
||||
return Collections.singletonList(
|
||||
new ResistanceModifier(self, Filters.hasAttached(self), 2));
|
||||
}
|
||||
}
|
||||
@@ -80,6 +80,11 @@ public abstract class AbstractModifier implements Modifier {
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getResistance(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard physicalCard, int result) {
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getTwilightCost(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard physicalCard, int result) {
|
||||
return result;
|
||||
|
||||
@@ -32,6 +32,8 @@ public interface Modifier {
|
||||
|
||||
public int getVitality(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard physicalCard, int result);
|
||||
|
||||
public int getResistance(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard physicalCard, int result);
|
||||
|
||||
public int getTwilightCost(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard physicalCard, int result);
|
||||
|
||||
public int getPlayOnTwilightCost(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard physicalCard, PhysicalCard target, int result);
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
package com.gempukku.lotro.logic.modifiers;
|
||||
|
||||
public enum ModifierEffect {
|
||||
KEYWORD_MODIFIER, STRENGTH_MODIFIER, VITALITY_MODIFIER, TWILIGHT_COST_MODIFIER, OVERWHELM_MODIFIER, WOUND_MODIFIER,
|
||||
KEYWORD_MODIFIER, STRENGTH_MODIFIER, VITALITY_MODIFIER, RESISTANCE_MODIFIER, TWILIGHT_COST_MODIFIER, OVERWHELM_MODIFIER,
|
||||
WOUND_MODIFIER,
|
||||
PRESENCE_MODIFIER, ARCHERY_MODIFIER, MOVE_LIMIT_MODIFIER, ACTION_MODIFIER, ASSIGNMENT_MODIFIER, DISCARD_FROM_PLAY_MODIFIER,
|
||||
LOOK_OR_REVEAL_MODIFIER, SPOT_MODIFIER
|
||||
}
|
||||
|
||||
@@ -236,6 +236,16 @@ public class ModifiersLogic implements ModifiersEnvironment, ModifiersQuerying {
|
||||
return Math.max(0, result);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getResistance(GameState gameState, PhysicalCard physicalCard) {
|
||||
int result = physicalCard.getBlueprint().getResistance() - gameState.getBurdens();
|
||||
for (Modifier modifier : getModifiers(ModifierEffect.RESISTANCE_MODIFIER)) {
|
||||
if (affectsCardWithSkipSet(gameState, physicalCard, modifier))
|
||||
result = modifier.getResistance(gameState, this, physicalCard, result);
|
||||
}
|
||||
return Math.max(0, result);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getTwilightCost(GameState gameState, PhysicalCard physicalCard) {
|
||||
int result = physicalCard.getBlueprint().getTwilightCost();
|
||||
|
||||
@@ -33,6 +33,8 @@ public interface ModifiersQuerying {
|
||||
|
||||
public int getVitality(GameState gameState, PhysicalCard physicalCard);
|
||||
|
||||
public int getResistance(GameState gameState, PhysicalCard physicalCard);
|
||||
|
||||
public boolean isOverwhelmedByStrength(GameState gameState, PhysicalCard card, int strength, int opposingStrength);
|
||||
|
||||
public boolean canTakeWound(GameState gameState, PhysicalCard card);
|
||||
|
||||
@@ -158,8 +158,8 @@ public class DefaultLotroGame implements LotroGame {
|
||||
} else {
|
||||
// Ring-bearer corruption
|
||||
PhysicalCard ringBearer = Filters.findFirstActive(getGameState(), getModifiersQuerying(), Filters.keyword(Keyword.RING_BEARER));
|
||||
int ringBearerResistance = ringBearer.getBlueprint().getResistance();
|
||||
if (getGameState().getBurdens() >= ringBearerResistance) {
|
||||
int ringBearerResistance = getModifiersQuerying().getResistance(getGameState(), ringBearer);
|
||||
if (ringBearerResistance <= 0) {
|
||||
playerLost(getGameState().getCurrentPlayerId(), "The Ring-Bearer is corrupted");
|
||||
return;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user