"Bill Ferny"

This commit is contained in:
marcins78@gmail.com
2011-09-29 22:46:02 +00:00
parent 658d524836
commit 6e2c574f1f
4 changed files with 67 additions and 23 deletions

View File

@@ -10,11 +10,11 @@ import com.gempukku.lotro.logic.modifiers.ModifiersQuerying;
import java.util.List;
public class PreventMinionBeingAssignedToCompanionModifier extends AbstractModifier {
public class PreventMinionBeingAssignedToCharacterModifier extends AbstractModifier {
private Filter _minionFilter;
public PreventMinionBeingAssignedToCompanionModifier(PhysicalCard source, Filter companionFilter, Filter minionFilter) {
super(source, "Is affected by assignment restriction", companionFilter, new ModifierEffect[]{ModifierEffect.ASSIGNMENT_MODIFIER});
public PreventMinionBeingAssignedToCharacterModifier(PhysicalCard source, Filter characterFilter, Filter minionFilter) {
super(source, "Is affected by assignment restriction", characterFilter, new ModifierEffect[]{ModifierEffect.ASSIGNMENT_MODIFIER});
_minionFilter = minionFilter;
}

View File

@@ -5,7 +5,7 @@ import com.gempukku.lotro.cards.PlayConditions;
import com.gempukku.lotro.cards.costs.ExertCharactersCost;
import com.gempukku.lotro.cards.effects.AddUntilEndOfPhaseModifierEffect;
import com.gempukku.lotro.cards.effects.CardAffectsCardEffect;
import com.gempukku.lotro.cards.modifiers.PreventMinionBeingAssignedToCompanionModifier;
import com.gempukku.lotro.cards.modifiers.PreventMinionBeingAssignedToCharacterModifier;
import com.gempukku.lotro.common.*;
import com.gempukku.lotro.filters.Filters;
import com.gempukku.lotro.game.PhysicalCard;
@@ -48,7 +48,7 @@ public class Card1_147 extends AbstractMinion {
action.appendEffect(new CardAffectsCardEffect(self, companion));
action.appendEffect(
new AddUntilEndOfPhaseModifierEffect(
new PreventMinionBeingAssignedToCompanionModifier(self, Filters.sameCard(companion), Filters.sameCard(self))
new PreventMinionBeingAssignedToCharacterModifier(self, Filters.sameCard(companion), Filters.sameCard(self))
, Phase.ASSIGNMENT));
}
});

View File

@@ -0,0 +1,58 @@
package com.gempukku.lotro.cards.set2.wraith;
import com.gempukku.lotro.cards.AbstractMinion;
import com.gempukku.lotro.cards.modifiers.PreventMinionBeingAssignedToCharacterModifier;
import com.gempukku.lotro.common.CardType;
import com.gempukku.lotro.common.Culture;
import com.gempukku.lotro.common.Keyword;
import com.gempukku.lotro.common.Race;
import com.gempukku.lotro.filters.Filters;
import com.gempukku.lotro.game.PhysicalCard;
import com.gempukku.lotro.game.state.LotroGame;
import com.gempukku.lotro.logic.actions.RequiredTriggerAction;
import com.gempukku.lotro.logic.effects.DiscardCardsFromPlayEffect;
import com.gempukku.lotro.logic.modifiers.Modifier;
import com.gempukku.lotro.logic.modifiers.RemoveKeywordModifier;
import com.gempukku.lotro.logic.timing.EffectResult;
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
/**
* Set: Mines of Moria
* Side: Shadow
* Culture: Wraith
* Twilight Cost: 2
* Type: Minion • Man
* Strength: 4
* Vitality: 1
* Site: 2
* Game Text: Nazgul are not roaming. The Free Peoples player may not assign a character to skirmish Bill Ferny.
* Discard Bill Ferny if underground.
*/
public class Card2_075 extends AbstractMinion {
public Card2_075() {
super(2, 4, 1, 2, Race.MAN, Culture.WRAITH, "Bill Ferny", true);
}
@Override
public List<? extends Modifier> getAlwaysOnModifiers(PhysicalCard self) {
List<Modifier> modifiers = new LinkedList<Modifier>();
modifiers.add(new RemoveKeywordModifier(self, Filters.race(Race.NAZGUL), Keyword.ROAMING));
modifiers.add(
new PreventMinionBeingAssignedToCharacterModifier(self, Filters.or(Filters.type(CardType.COMPANION), Filters.type(CardType.ALLY)), Filters.sameCard(self)));
return modifiers;
}
@Override
public List<RequiredTriggerAction> getRequiredAfterTriggers(LotroGame game, EffectResult effectResult, PhysicalCard self) {
if (game.getModifiersQuerying().hasKeyword(game.getGameState(), game.getGameState().getCurrentSite(), Keyword.UNDERGROUND)) {
RequiredTriggerAction action = new RequiredTriggerAction(self);
action.appendEffect(
new DiscardCardsFromPlayEffect(self, self));
return Collections.singletonList(action);
}
return null;
}
}

View File

@@ -6,10 +6,7 @@ import com.gempukku.lotro.filters.Filter;
import com.gempukku.lotro.filters.Filters;
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.ModifiersLogic;
import com.gempukku.lotro.logic.modifiers.ModifiersQuerying;
import com.gempukku.lotro.logic.modifiers.*;
public class RoamingRule {
private ModifiersLogic _modifiersLogic;
@@ -27,21 +24,10 @@ public class RoamingRule {
});
_modifiersLogic.addAlwaysOnModifier(
new AbstractModifier(null, "Is Roaming", roamingFilter, new ModifierEffect[]{ModifierEffect.KEYWORD_MODIFIER, ModifierEffect.TWILIGHT_COST_MODIFIER}) {
@Override
public int getKeywordCount(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard physicalCard, Keyword keyword, int result) {
if (keyword == Keyword.ROAMING)
return result + 1;
return result;
}
@Override
public boolean hasKeyword(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard physicalCard, Keyword keyword, boolean result) {
if (keyword == Keyword.ROAMING)
return true;
return result;
}
new KeywordModifier(null, roamingFilter, Keyword.ROAMING));
_modifiersLogic.addAlwaysOnModifier(
new AbstractModifier(null, "Roaming twilight cost increase", Filters.keyword(Keyword.ROAMING), new ModifierEffect[]{ModifierEffect.TWILIGHT_COST_MODIFIER}) {
@Override
public int getTwilightCost(GameState gameState, ModifiersQuerying modifiersLogic, PhysicalCard physicalCard, int result) {
return result + Math.max(0, modifiersLogic.getRoamingPenalty(gameState, physicalCard));