diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/actions/ActivateCardAction.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/actions/ActivateCardAction.java
index 62fc64f3d..07480d1e6 100644
--- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/actions/ActivateCardAction.java
+++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/actions/ActivateCardAction.java
@@ -3,6 +3,8 @@ package com.gempukku.lotro.logic.actions;
import com.gempukku.lotro.common.Keyword;
import com.gempukku.lotro.game.PhysicalCard;
import com.gempukku.lotro.game.state.LotroGame;
+import com.gempukku.lotro.logic.GameUtils;
+import com.gempukku.lotro.logic.effects.ActivateCardEffect;
import com.gempukku.lotro.logic.effects.SendMessageEffect;
import com.gempukku.lotro.logic.timing.Effect;
@@ -10,11 +12,16 @@ public class ActivateCardAction extends AbstractCostToEffectAction {
private PhysicalCard _physicalCard;
private Keyword _type;
+ private ActivateCardEffect _activateCardEffect;
+
private boolean _sentMessage;
+ private boolean _activated;
public ActivateCardAction(PhysicalCard physicalCard, Keyword type) {
_physicalCard = physicalCard;
_type = type;
+
+ _activateCardEffect = new ActivateCardEffect(physicalCard);
}
@Override
@@ -44,14 +51,21 @@ public class ActivateCardAction extends AbstractCostToEffectAction {
if (cost != null)
return cost;
- Effect effect = getNextEffect();
- if (effect != null)
- return effect;
+ if (!_activated) {
+ _activated = true;
+ return _activateCardEffect;
+ }
+
+ if (!_activateCardEffect.isCancelled()) {
+ Effect effect = getNextEffect();
+ if (effect != null)
+ return effect;
+ }
}
return null;
}
- protected String getMessage() {
- return "
" + _physicalCard.getBlueprint().getName() + "
is used";
+ private String getMessage() {
+ return GameUtils.getCardLink(_physicalCard) + " is used";
}
}
diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/actions/OptionalTriggerAction.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/actions/OptionalTriggerAction.java
index 28d104fe4..fb1882831 100644
--- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/actions/OptionalTriggerAction.java
+++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/actions/OptionalTriggerAction.java
@@ -1,17 +1,56 @@
package com.gempukku.lotro.logic.actions;
+import com.gempukku.lotro.common.Keyword;
import com.gempukku.lotro.game.PhysicalCard;
+import com.gempukku.lotro.game.state.LotroGame;
+import com.gempukku.lotro.logic.GameUtils;
+import com.gempukku.lotro.logic.effects.SendMessageEffect;
+import com.gempukku.lotro.logic.timing.Effect;
-public class OptionalTriggerAction extends ActivateCardAction {
+public class OptionalTriggerAction extends AbstractCostToEffectAction {
private PhysicalCard _physicalCard;
+ private boolean _sentMessage;
+
public OptionalTriggerAction(PhysicalCard physicalCard) {
- super(physicalCard, null);
_physicalCard = physicalCard;
}
@Override
- protected String getMessage() {
- return "" + _physicalCard.getBlueprint().getName() + "
optional triggered effect is used";
+ public Keyword getType() {
+ return null;
+ }
+
+ @Override
+ public PhysicalCard getActionSource() {
+ return _physicalCard;
+ }
+
+ @Override
+ public String getText(LotroGame game) {
+ return null;
+ }
+
+ @Override
+ public Effect nextEffect() {
+ if (!_sentMessage && _physicalCard != null) {
+ _sentMessage = true;
+ return new SendMessageEffect(getMessage());
+ }
+
+ if (!isCostFailed()) {
+ Effect cost = getNextCost();
+ if (cost != null)
+ return cost;
+
+ Effect effect = getNextEffect();
+ if (effect != null)
+ return effect;
+ }
+ return null;
+ }
+
+ private String getMessage() {
+ return GameUtils.getCardLink(_physicalCard) + " optional triggered effect is used";
}
}
diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/actions/RequiredTriggerAction.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/actions/RequiredTriggerAction.java
index 37152b95c..ee98caad3 100644
--- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/actions/RequiredTriggerAction.java
+++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/actions/RequiredTriggerAction.java
@@ -1,17 +1,56 @@
package com.gempukku.lotro.logic.actions;
+import com.gempukku.lotro.common.Keyword;
import com.gempukku.lotro.game.PhysicalCard;
+import com.gempukku.lotro.game.state.LotroGame;
+import com.gempukku.lotro.logic.GameUtils;
+import com.gempukku.lotro.logic.effects.SendMessageEffect;
+import com.gempukku.lotro.logic.timing.Effect;
-public class RequiredTriggerAction extends ActivateCardAction {
+public class RequiredTriggerAction extends AbstractCostToEffectAction {
private PhysicalCard _physicalCard;
+ private boolean _sentMessage;
+
public RequiredTriggerAction(PhysicalCard physicalCard) {
- super(physicalCard, null);
_physicalCard = physicalCard;
}
@Override
- protected String getMessage() {
- return "" + _physicalCard.getBlueprint().getName() + "
required triggered effect is used";
+ public Keyword getType() {
+ return null;
+ }
+
+ @Override
+ public PhysicalCard getActionSource() {
+ return _physicalCard;
+ }
+
+ @Override
+ public String getText(LotroGame game) {
+ return null;
+ }
+
+ @Override
+ public Effect nextEffect() {
+ if (!_sentMessage && _physicalCard != null) {
+ _sentMessage = true;
+ return new SendMessageEffect(getMessage());
+ }
+
+ if (!isCostFailed()) {
+ Effect cost = getNextCost();
+ if (cost != null)
+ return cost;
+
+ Effect effect = getNextEffect();
+ if (effect != null)
+ return effect;
+ }
+ return null;
+ }
+
+ private String getMessage() {
+ return GameUtils.getCardLink(_physicalCard) + " required triggered effect is used";
}
}
diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/effects/ActivateCardEffect.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/effects/ActivateCardEffect.java
new file mode 100644
index 000000000..c18243b42
--- /dev/null
+++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/effects/ActivateCardEffect.java
@@ -0,0 +1,49 @@
+package com.gempukku.lotro.logic.effects;
+
+import com.gempukku.lotro.game.PhysicalCard;
+import com.gempukku.lotro.game.state.LotroGame;
+import com.gempukku.lotro.logic.GameUtils;
+import com.gempukku.lotro.logic.timing.AbstractEffect;
+import com.gempukku.lotro.logic.timing.EffectResult;
+
+public class ActivateCardEffect extends AbstractEffect {
+ private PhysicalCard _source;
+
+ private boolean _cancelled;
+
+ public ActivateCardEffect(PhysicalCard source) {
+ _source = source;
+ }
+
+ @Override
+ public EffectResult.Type getType() {
+ return EffectResult.Type.ACTIVATE;
+ }
+
+ @Override
+ public String getText(LotroGame game) {
+ return "Activated " + GameUtils.getCardLink(_source);
+ }
+
+ public PhysicalCard getSource() {
+ return _source;
+ }
+
+ @Override
+ public boolean isPlayableInFull(LotroGame game) {
+ return true;
+ }
+
+ public boolean isCancelled() {
+ return _cancelled;
+ }
+
+ public void cancel() {
+ _cancelled = true;
+ }
+
+ @Override
+ protected FullEffectResult playEffectReturningResult(LotroGame game) {
+ return new FullEffectResult(null, true, true);
+ }
+}
diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/EffectResult.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/EffectResult.java
index 9809d31a0..a1d43d625 100644
--- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/EffectResult.java
+++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/EffectResult.java
@@ -14,7 +14,7 @@ public abstract class EffectResult {
START_OF_TURN,
END_OF_TURN,
- PLAY, DRAW_CARD_OR_PUT_INTO_HAND,
+ PLAY, ACTIVATE, DRAW_CARD_OR_PUT_INTO_HAND,
PUT_ON_THE_ONE_RING, REMOVE_BURDEN, ADD_BURDEN,