"Primitive Brand"

This commit is contained in:
marcins78@gmail.com
2012-02-10 17:09:24 +00:00
parent 6fb927c93d
commit 9ba2f0bac3
3 changed files with 91 additions and 2 deletions

View File

@@ -45,8 +45,14 @@ public class TransferPermanentEffect extends AbstractEffect {
game.getActionsEnvironment().emitEffectResult(
new CardTransferredResult(_physicalCard, transferredFrom, _targetCard));
afterTransferredCallback();
return new FullEffectResult(true, true);
}
return new FullEffectResult(false, false);
}
protected void afterTransferredCallback() {
}
}

View File

@@ -88,6 +88,7 @@ public class ChooseAndTransferAttachableEffect extends AbstractEffect {
final Set<PhysicalCard> selectedAttachments = getSelectedCardsByResponse(result);
if (selectedAttachments.size() == 1) {
final PhysicalCard attachment = selectedAttachments.iterator().next();
final PhysicalCard transferredFrom = attachment.getAttachedTo();
AbstractAttachable attachable = (AbstractAttachable) attachment.getBlueprint();
final Collection<PhysicalCard> validTargets = Filters.filterActive(game.getGameState(), game.getModifiersQuerying(), getValidTargetFilter(game, attachment, attachable));
game.getUserFeedback().sendAwaitingDecision(
@@ -97,10 +98,15 @@ public class ChooseAndTransferAttachableEffect extends AbstractEffect {
public void decisionMade(String result) throws DecisionResultInvalidException {
final Set<PhysicalCard> selectedTargets = getSelectedCardsByResponse(result);
if (selectedTargets.size() == 1) {
PhysicalCard selectedTarget = selectedTargets.iterator().next();
final PhysicalCard selectedTarget = selectedTargets.iterator().next();
SubAction subAction = new SubAction(_action);
subAction.appendEffect(
new TransferPermanentEffect(attachment, selectedTarget));
new TransferPermanentEffect(attachment, selectedTarget) {
@Override
protected void afterTransferredCallback() {
afterTransferCallback(attachment, transferredFrom, selectedTarget);
}
});
game.getActionsEnvironment().addActionToStack(subAction);
}
}
@@ -112,4 +118,8 @@ public class ChooseAndTransferAttachableEffect extends AbstractEffect {
}
return new FullEffectResult(false, false);
}
protected void afterTransferCallback(PhysicalCard transferredCard, PhysicalCard transferredFrom, PhysicalCard transferredTo) {
}
}

View File

@@ -0,0 +1,73 @@
package com.gempukku.lotro.cards.set17.men;
import com.gempukku.lotro.cards.AbstractAttachable;
import com.gempukku.lotro.cards.TriggerConditions;
import com.gempukku.lotro.cards.effects.StackCardFromPlayEffect;
import com.gempukku.lotro.cards.effects.choose.ChooseAndTransferAttachableEffect;
import com.gempukku.lotro.common.*;
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.OptionalTriggerAction;
import com.gempukku.lotro.logic.effects.ChooseActiveCardEffect;
import com.gempukku.lotro.logic.modifiers.Modifier;
import com.gempukku.lotro.logic.modifiers.StrengthModifier;
import com.gempukku.lotro.logic.timing.EffectResult;
import java.util.Collections;
import java.util.List;
/**
* Set: Rise of Saruman
* Side: Shadow
* Culture: Men
* Twilight Cost: 1
* Type: Possession • Hand Weapon
* Strength: +2
* Game Text: Bearer must be a [MEN] minion. Each time bearer wins a skirmish you may transfer this possession
* to another [MEN] minion. If you do, stack a [MEN] minion from play on a [MEN] possession in your support area.
*/
public class Card17_047 extends AbstractAttachable {
public Card17_047() {
super(Side.SHADOW, CardType.POSSESSION, 1, Culture.MEN, PossessionClass.HAND_WEAPON, "Primitive Brand");
}
@Override
protected Filterable getValidTargetFilter(String playerId, LotroGame game, PhysicalCard self) {
return Filters.and(Culture.MEN, CardType.MINION);
}
@Override
public Modifier getAlwaysOnModifier(PhysicalCard self) {
return new StrengthModifier(self, Filters.hasAttached(self), 2);
}
@Override
public List<OptionalTriggerAction> getOptionalAfterTriggers(final String playerId, LotroGame game, EffectResult effectResult, final PhysicalCard self) {
if (TriggerConditions.winsSkirmish(game, effectResult, self.getAttachedTo())) {
final OptionalTriggerAction action = new OptionalTriggerAction(self);
action.appendEffect(
new ChooseAndTransferAttachableEffect(action, playerId, self, Filters.any, Filters.any) {
@Override
protected void afterTransferCallback(PhysicalCard transferredCard, PhysicalCard transferredFrom, PhysicalCard transferredTo) {
action.appendEffect(
new ChooseActiveCardEffect(self, playerId, "Choose a MEN minion to stack", Culture.MEN, CardType.MINION) {
@Override
protected void cardSelected(LotroGame game, final PhysicalCard minion) {
action.appendEffect(
new ChooseActiveCardEffect(self, playerId, "Choose a MEN possession in your support area", Culture.MEN, CardType.POSSESSION, Zone.SUPPORT) {
@Override
protected void cardSelected(LotroGame game, PhysicalCard possession) {
action.appendEffect(
new StackCardFromPlayEffect(minion, possession));
}
});
}
});
}
});
return Collections.singletonList(action);
}
return null;
}
}