diff --git a/forge-game/src/main/java/forge/game/ability/AbilityKey.java b/forge-game/src/main/java/forge/game/ability/AbilityKey.java index c03300096ab..c86ad5e205a 100644 --- a/forge-game/src/main/java/forge/game/ability/AbilityKey.java +++ b/forge-game/src/main/java/forge/game/ability/AbilityKey.java @@ -63,6 +63,7 @@ public enum AbilityKey { DividedShieldAmount("DividedShieldAmount"), EchoPaid("EchoPaid"), EffectOnly("EffectOnly"), + Enlisted("Enlisted"), Exploited("Exploited"), Explorer("Explorer"), ExtraTurn("ExtraTurn"), diff --git a/forge-game/src/main/java/forge/game/cost/CostEnlist.java b/forge-game/src/main/java/forge/game/cost/CostEnlist.java index 1fd69cf5bb8..19d0be83fe9 100644 --- a/forge-game/src/main/java/forge/game/cost/CostEnlist.java +++ b/forge-game/src/main/java/forge/game/cost/CostEnlist.java @@ -79,6 +79,7 @@ public class CostEnlist extends CostPartWithTrigger { payTrig.addRemembered(targetCard); final Map runParams = AbilityKey.mapFromCard(payTrig.getHostCard()); + runParams.put(AbilityKey.Enlisted, targetCard); targetCard.getGame().getTriggerHandler().runTrigger(TriggerType.Enlisted, runParams, false); return targetCard; } diff --git a/forge-game/src/main/java/forge/game/cost/CostPartWithTrigger.java b/forge-game/src/main/java/forge/game/cost/CostPartWithTrigger.java index 240f154fe5d..e8a4aeae435 100644 --- a/forge-game/src/main/java/forge/game/cost/CostPartWithTrigger.java +++ b/forge-game/src/main/java/forge/game/cost/CostPartWithTrigger.java @@ -13,6 +13,10 @@ import forge.game.trigger.TriggerHandler; import forge.game.trigger.TriggerType; public abstract class CostPartWithTrigger extends CostPartWithList { + /** + * Serializables need a version ID. + */ + private static final long serialVersionUID = 1L; public CostPartWithTrigger(final String amount, final String type, final String description) { super(amount, type, description); diff --git a/forge-game/src/main/java/forge/game/trigger/TriggerEnlisted.java b/forge-game/src/main/java/forge/game/trigger/TriggerEnlisted.java index fe51fd3e952..0c91f9b178a 100644 --- a/forge-game/src/main/java/forge/game/trigger/TriggerEnlisted.java +++ b/forge-game/src/main/java/forge/game/trigger/TriggerEnlisted.java @@ -27,12 +27,15 @@ public class TriggerEnlisted extends Trigger { if (!matchesValidParam("ValidCard", runParams.get(AbilityKey.Card))) { return false; } + if (!matchesValidParam("ValidEnlisted", runParams.get(AbilityKey.Enlisted))) { + return false; + } return true; } @Override public void setTriggeringObjects(SpellAbility sa, Map runParams) { - sa.setTriggeringObjectsFrom(runParams, AbilityKey.Card); + sa.setTriggeringObjectsFrom(runParams, AbilityKey.Card, AbilityKey.Enlisted); } @Override diff --git a/forge-gui/res/cardsfolder/upcoming/goblin_morale_sergeant.txt b/forge-gui/res/cardsfolder/upcoming/goblin_morale_sergeant.txt new file mode 100644 index 00000000000..a9b80bad53b --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/goblin_morale_sergeant.txt @@ -0,0 +1,13 @@ +Name:Goblin Morale Sergeant +ManaCost:1 R +Types:Creature Goblin Soldier +PT:2/1 +K:Haste +K:Enlist +T:Mode$ Enlisted | ValidCard$ Card.Self | ValidEnlisted$ Card.nonToken | TriggerZones$ Battlefield | OptionalDecider$ You | Execute$ TrigConjure | TriggerDescription$ Whenever CARDNAME Sergeant enlists a nontoken creature, you may conjure a duplicate of that creature into the top five cards of your library at random. The duplicate perpetually gets +1/+0 and gains haste. +SVar:TrigConjure:DB$ MakeCard | Conjure$ True | DefinedName$ TriggeredEnlisted | Zone$ Library | RememberMade$ True | SubAbility$ DBReorder +SVar:DBReorder:DB$ ChangeZoneAll | ChangeType$ Card.IsRemembered | Origin$ Library | Destination$ Library | Defined$ Top5 | SubAbility$ DBEffect +SVar:DBEffect:DB$ Effect | Name$ Goblin Morale Sergeant's Perpetual Effect | RememberObjects$ Remembered | StaticAbilities$ PerpetualAbility | Duration$ Permanent | SubAbility$ DBCleanup +SVar:PerpetualAbility:Mode$ Continuous | AddPower$ 1 | AddKeyword$ Haste | Affected$ Card.IsRemembered | EffectZone$ Command | AffectedZone$ Battlefield,Hand,Graveyard,Exile,Stack,Library,Command | Description$ The duplicate perpetually gets +1/+0 and gains haste. +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +Oracle:Haste\nEnlist\nWhenever Goblin Morale Sergeant enlists a nontoken creature, you may conjure a duplicate of that creature into the top five cards of your library at random. The duplicate perpetually gets +1/+0 and gains haste.