"Sneak Attack"

This commit is contained in:
marcins78
2013-01-03 16:06:02 +00:00
parent 3be898cd5e
commit 6de6fd479d
10 changed files with 69 additions and 19 deletions

View File

@@ -12,17 +12,17 @@ import com.gempukku.lotro.logic.modifiers.ModifiersQuerying;
import java.util.Set; import java.util.Set;
public class PreventMinionBeingAssignedToCharacterModifier extends AbstractModifier { public class CantBeAssignedAgainstModifier extends AbstractModifier {
private Side _side; private Side _side;
private Filterable _minionFilter; private Filterable _minionFilter;
public PreventMinionBeingAssignedToCharacterModifier(PhysicalCard source, Side side, Filterable characterFilter, Filterable minionFilter) { public CantBeAssignedAgainstModifier(PhysicalCard source, Side side, Filterable characterFilter, Filterable minionFilter) {
super(source, "Is affected by assignment restriction", characterFilter, ModifierEffect.ASSIGNMENT_MODIFIER); super(source, "Is affected by assignment restriction", characterFilter, ModifierEffect.ASSIGNMENT_MODIFIER);
_side = side; _side = side;
_minionFilter = minionFilter; _minionFilter = minionFilter;
} }
public PreventMinionBeingAssignedToCharacterModifier(PhysicalCard source, Side side, Filterable characterFilter, Condition condition, Filterable minionFilter) { public CantBeAssignedAgainstModifier(PhysicalCard source, Side side, Filterable characterFilter, Condition condition, Filterable minionFilter) {
super(source, "Is affected by assignment restriction", characterFilter, condition, ModifierEffect.ASSIGNMENT_MODIFIER); super(source, "Is affected by assignment restriction", characterFilter, condition, ModifierEffect.ASSIGNMENT_MODIFIER);
_side = side; _side = side;
_minionFilter = minionFilter; _minionFilter = minionFilter;

View File

@@ -4,7 +4,7 @@ import com.gempukku.lotro.cards.AbstractMinion;
import com.gempukku.lotro.cards.PlayConditions; import com.gempukku.lotro.cards.PlayConditions;
import com.gempukku.lotro.cards.effects.AddUntilEndOfPhaseModifierEffect; import com.gempukku.lotro.cards.effects.AddUntilEndOfPhaseModifierEffect;
import com.gempukku.lotro.cards.effects.SelfExertEffect; import com.gempukku.lotro.cards.effects.SelfExertEffect;
import com.gempukku.lotro.cards.modifiers.PreventMinionBeingAssignedToCharacterModifier; import com.gempukku.lotro.cards.modifiers.CantBeAssignedAgainstModifier;
import com.gempukku.lotro.common.*; import com.gempukku.lotro.common.*;
import com.gempukku.lotro.filters.Filters; import com.gempukku.lotro.filters.Filters;
import com.gempukku.lotro.game.PhysicalCard; import com.gempukku.lotro.game.PhysicalCard;
@@ -46,7 +46,7 @@ public class Card1_147 extends AbstractMinion {
protected void cardSelected(LotroGame game, PhysicalCard companion) { protected void cardSelected(LotroGame game, PhysicalCard companion) {
action.appendEffect( action.appendEffect(
new AddUntilEndOfPhaseModifierEffect( new AddUntilEndOfPhaseModifierEffect(
new PreventMinionBeingAssignedToCharacterModifier(self, Side.FREE_PEOPLE, Filters.sameCard(companion), self) new CantBeAssignedAgainstModifier(self, Side.FREE_PEOPLE, Filters.sameCard(companion), self)
, Phase.ASSIGNMENT)); , Phase.ASSIGNMENT));
} }
}); });

View File

@@ -4,7 +4,7 @@ import com.gempukku.lotro.cards.AbstractMinion;
import com.gempukku.lotro.cards.PlayConditions; import com.gempukku.lotro.cards.PlayConditions;
import com.gempukku.lotro.cards.TriggerConditions; import com.gempukku.lotro.cards.TriggerConditions;
import com.gempukku.lotro.cards.effects.AddUntilStartOfPhaseModifierEffect; import com.gempukku.lotro.cards.effects.AddUntilStartOfPhaseModifierEffect;
import com.gempukku.lotro.cards.modifiers.PreventMinionBeingAssignedToCharacterModifier; import com.gempukku.lotro.cards.modifiers.CantBeAssignedAgainstModifier;
import com.gempukku.lotro.common.CardType; import com.gempukku.lotro.common.CardType;
import com.gempukku.lotro.common.Culture; import com.gempukku.lotro.common.Culture;
import com.gempukku.lotro.common.Phase; import com.gempukku.lotro.common.Phase;
@@ -47,7 +47,7 @@ public class Card12_094 extends AbstractMinion {
protected void cardSelected(LotroGame game, PhysicalCard card) { protected void cardSelected(LotroGame game, PhysicalCard card) {
action.appendEffect( action.appendEffect(
new AddUntilStartOfPhaseModifierEffect( new AddUntilStartOfPhaseModifierEffect(
new PreventMinionBeingAssignedToCharacterModifier(self, null, card, self), Phase.REGROUP)); new CantBeAssignedAgainstModifier(self, null, card, self), Phase.REGROUP));
} }
}); });
return Collections.singletonList(action); return Collections.singletonList(action);

View File

@@ -4,7 +4,7 @@ import com.gempukku.lotro.cards.AbstractMinion;
import com.gempukku.lotro.cards.PlayConditions; import com.gempukku.lotro.cards.PlayConditions;
import com.gempukku.lotro.cards.effects.AddUntilEndOfPhaseModifierEffect; import com.gempukku.lotro.cards.effects.AddUntilEndOfPhaseModifierEffect;
import com.gempukku.lotro.cards.effects.SelfExertEffect; import com.gempukku.lotro.cards.effects.SelfExertEffect;
import com.gempukku.lotro.cards.modifiers.PreventMinionBeingAssignedToCharacterModifier; import com.gempukku.lotro.cards.modifiers.CantBeAssignedAgainstModifier;
import com.gempukku.lotro.common.*; import com.gempukku.lotro.common.*;
import com.gempukku.lotro.game.PhysicalCard; import com.gempukku.lotro.game.PhysicalCard;
import com.gempukku.lotro.game.state.LotroGame; import com.gempukku.lotro.game.state.LotroGame;
@@ -47,7 +47,7 @@ public class Card12_156 extends AbstractMinion {
protected void cardSelected(LotroGame game, PhysicalCard card) { protected void cardSelected(LotroGame game, PhysicalCard card) {
action.appendEffect( action.appendEffect(
new AddUntilEndOfPhaseModifierEffect( new AddUntilEndOfPhaseModifierEffect(
new PreventMinionBeingAssignedToCharacterModifier(self, Side.FREE_PEOPLE, card, self), Phase.ASSIGNMENT)); new CantBeAssignedAgainstModifier(self, Side.FREE_PEOPLE, card, self), Phase.ASSIGNMENT));
} }
}); });
return Collections.singletonList(action); return Collections.singletonList(action);

View File

@@ -3,7 +3,7 @@ package com.gempukku.lotro.cards.set15.men;
import com.gempukku.lotro.cards.AbstractMinion; import com.gempukku.lotro.cards.AbstractMinion;
import com.gempukku.lotro.cards.PlayConditions; import com.gempukku.lotro.cards.PlayConditions;
import com.gempukku.lotro.cards.effects.SelfExertEffect; import com.gempukku.lotro.cards.effects.SelfExertEffect;
import com.gempukku.lotro.cards.modifiers.PreventMinionBeingAssignedToCharacterModifier; import com.gempukku.lotro.cards.modifiers.CantBeAssignedAgainstModifier;
import com.gempukku.lotro.common.*; import com.gempukku.lotro.common.*;
import com.gempukku.lotro.filters.Filters; import com.gempukku.lotro.filters.Filters;
import com.gempukku.lotro.game.PhysicalCard; import com.gempukku.lotro.game.PhysicalCard;
@@ -24,7 +24,7 @@ public class Card15_072 extends AbstractMinion {
@Override @Override
public Modifier getAlwaysOnModifier(PhysicalCard self) { public Modifier getAlwaysOnModifier(PhysicalCard self) {
return new PreventMinionBeingAssignedToCharacterModifier(self, Side.FREE_PEOPLE, CardType.COMPANION, new SpotCondition(self, Filters.unwounded), self); return new CantBeAssignedAgainstModifier(self, Side.FREE_PEOPLE, CardType.COMPANION, new SpotCondition(self, Filters.unwounded), self);
} }
@Override @Override

View File

@@ -1,7 +1,7 @@
package com.gempukku.lotro.cards.set19.moria; package com.gempukku.lotro.cards.set19.moria;
import com.gempukku.lotro.cards.AbstractMinion; import com.gempukku.lotro.cards.AbstractMinion;
import com.gempukku.lotro.cards.modifiers.PreventMinionBeingAssignedToCharacterModifier; import com.gempukku.lotro.cards.modifiers.CantBeAssignedAgainstModifier;
import com.gempukku.lotro.cards.modifiers.ShouldSkipPhaseModifier; import com.gempukku.lotro.cards.modifiers.ShouldSkipPhaseModifier;
import com.gempukku.lotro.cards.modifiers.conditions.LocationCondition; import com.gempukku.lotro.cards.modifiers.conditions.LocationCondition;
import com.gempukku.lotro.common.*; import com.gempukku.lotro.common.*;
@@ -40,7 +40,7 @@ public class Card19_018 extends AbstractMinion {
modifiers.add( modifiers.add(
new ShouldSkipPhaseModifier(self, new LocationCondition(Keyword.UNDERGROUND), Phase.MANEUVER)); new ShouldSkipPhaseModifier(self, new LocationCondition(Keyword.UNDERGROUND), Phase.MANEUVER));
modifiers.add( modifiers.add(
new PreventMinionBeingAssignedToCharacterModifier(self, null, Filters.and(CardType.COMPANION, Filters.lessStrengthThan(7)), new CantBeAssignedAgainstModifier(self, null, Filters.and(CardType.COMPANION, Filters.lessStrengthThan(7)),
new LocationCondition(Keyword.UNDERGROUND), self)); new LocationCondition(Keyword.UNDERGROUND), self));
return modifiers; return modifiers;
} }

View File

@@ -2,7 +2,7 @@ package com.gempukku.lotro.cards.set19.wraith;
import com.gempukku.lotro.cards.AbstractMinion; import com.gempukku.lotro.cards.AbstractMinion;
import com.gempukku.lotro.cards.TriggerConditions; import com.gempukku.lotro.cards.TriggerConditions;
import com.gempukku.lotro.cards.modifiers.PreventMinionBeingAssignedToCharacterModifier; import com.gempukku.lotro.cards.modifiers.CantBeAssignedAgainstModifier;
import com.gempukku.lotro.common.*; import com.gempukku.lotro.common.*;
import com.gempukku.lotro.filters.Filter; import com.gempukku.lotro.filters.Filter;
import com.gempukku.lotro.filters.Filters; import com.gempukku.lotro.filters.Filters;
@@ -41,7 +41,7 @@ public class Card19_038 extends AbstractMinion {
@Override @Override
public Modifier getAlwaysOnModifier(final PhysicalCard self) { public Modifier getAlwaysOnModifier(final PhysicalCard self) {
return new PreventMinionBeingAssignedToCharacterModifier(self, Side.FREE_PEOPLE, return new CantBeAssignedAgainstModifier(self, Side.FREE_PEOPLE,
Filters.and(CardType.COMPANION, new Filter() { Filters.and(CardType.COMPANION, new Filter() {
@Override @Override
public boolean accepts(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard physicalCard) { public boolean accepts(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard physicalCard) {

View File

@@ -2,7 +2,7 @@ package com.gempukku.lotro.cards.set19.wraith;
import com.gempukku.lotro.cards.AbstractMinion; import com.gempukku.lotro.cards.AbstractMinion;
import com.gempukku.lotro.cards.TriggerConditions; import com.gempukku.lotro.cards.TriggerConditions;
import com.gempukku.lotro.cards.modifiers.PreventMinionBeingAssignedToCharacterModifier; import com.gempukku.lotro.cards.modifiers.CantBeAssignedAgainstModifier;
import com.gempukku.lotro.common.Culture; import com.gempukku.lotro.common.Culture;
import com.gempukku.lotro.common.Keyword; import com.gempukku.lotro.common.Keyword;
import com.gempukku.lotro.common.Names; import com.gempukku.lotro.common.Names;
@@ -43,7 +43,7 @@ public class Card19_039 extends AbstractMinion {
@Override @Override
public Modifier getAlwaysOnModifier(final PhysicalCard self) { public Modifier getAlwaysOnModifier(final PhysicalCard self) {
return new PreventMinionBeingAssignedToCharacterModifier(self, null, return new CantBeAssignedAgainstModifier(self, null,
new Filter() { new Filter() {
@Override @Override
public boolean accepts(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard physicalCard) { public boolean accepts(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard physicalCard) {

View File

@@ -0,0 +1,50 @@
package com.gempukku.lotro.cards.set20.dunland;
import com.gempukku.lotro.cards.AbstractEvent;
import com.gempukku.lotro.cards.PlayConditions;
import com.gempukku.lotro.cards.actions.PlayEventAction;
import com.gempukku.lotro.cards.effects.AddUntilStartOfPhaseModifierEffect;
import com.gempukku.lotro.cards.modifiers.CantBeAssignedAgainstModifier;
import com.gempukku.lotro.common.Culture;
import com.gempukku.lotro.common.Phase;
import com.gempukku.lotro.common.Race;
import com.gempukku.lotro.common.Side;
import com.gempukku.lotro.filters.Filters;
import com.gempukku.lotro.game.PhysicalCard;
import com.gempukku.lotro.game.state.LotroGame;
import com.gempukku.lotro.logic.effects.ChooseActiveCardEffect;
/**
* 2
* Sneak Attack
* Dunland Event • Assignment
* Spot a [Dunland] Man and a site you control to spot an unbound companion. Until the regroup phase,
* that companion may not be assigned to skirmish a [Dunland] man.
*/
public class Card20_028 extends AbstractEvent {
public Card20_028() {
super(Side.SHADOW, 2, Culture.DUNLAND, "Sneak Attack", Phase.ASSIGNMENT);
}
@Override
public boolean checkPlayRequirements(String playerId, LotroGame game, PhysicalCard self, int withTwilightRemoved, int twilightModifier, boolean ignoreRoamingPenalty, boolean ignoreCheckingDeadPile) {
return super.checkPlayRequirements(playerId, game, self, withTwilightRemoved, twilightModifier, ignoreRoamingPenalty, ignoreCheckingDeadPile)
&& PlayConditions.canSpot(game, Culture.DUNLAND, Race.MAN)
&& PlayConditions.canSpot(game, Filters.siteControlled(playerId));
}
@Override
public PlayEventAction getPlayCardAction(String playerId, LotroGame game, final PhysicalCard self, int twilightModifier, boolean ignoreRoamingPenalty) {
final PlayEventAction action = new PlayEventAction(self);
action.appendEffect(
new ChooseActiveCardEffect(self, playerId, "Choose an unbound companion", Filters.unboundCompanion) {
@Override
protected void cardSelected(LotroGame game, PhysicalCard companion) {
action.appendEffect(
new AddUntilStartOfPhaseModifierEffect(
new CantBeAssignedAgainstModifier(self, null, companion, Filters.and(Culture.DUNLAND, Race.MAN)), Phase.REGROUP));
}
});
return action;
}
}

View File

@@ -1,7 +1,7 @@
package com.gempukku.lotro.cards.set6.moria; package com.gempukku.lotro.cards.set6.moria;
import com.gempukku.lotro.cards.AbstractMinion; import com.gempukku.lotro.cards.AbstractMinion;
import com.gempukku.lotro.cards.modifiers.PreventMinionBeingAssignedToCharacterModifier; import com.gempukku.lotro.cards.modifiers.CantBeAssignedAgainstModifier;
import com.gempukku.lotro.common.CardType; import com.gempukku.lotro.common.CardType;
import com.gempukku.lotro.common.Culture; import com.gempukku.lotro.common.Culture;
import com.gempukku.lotro.common.Keyword; import com.gempukku.lotro.common.Keyword;
@@ -44,7 +44,7 @@ public class Card6_076 extends AbstractMinion {
@Override @Override
public List<? extends Modifier> getAlwaysOnModifiers(LotroGame game, PhysicalCard self) { public List<? extends Modifier> getAlwaysOnModifiers(LotroGame game, PhysicalCard self) {
return Collections.singletonList( return Collections.singletonList(
new PreventMinionBeingAssignedToCharacterModifier(self, null, new CantBeAssignedAgainstModifier(self, null,
Filters.and(Filters.or(CardType.COMPANION, CardType.ALLY), Filters.lessStrengthThan(6)), self)); Filters.and(Filters.or(CardType.COMPANION, CardType.ALLY), Filters.lessStrengthThan(6)), self));
} }
} }