mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-18 19:58:00 +00:00
- C15: added Herald of the Host (keyword: Myriad)
This commit is contained in:
@@ -1053,6 +1053,10 @@ public class AbilityUtils {
|
||||
else if (defined.equals("DefendingPlayer")) {
|
||||
players.add(game.getCombat().getDefendingPlayerRelatedTo(card));
|
||||
}
|
||||
else if (defined.equals("OpponentsOtherThanDefendingPlayer")) {
|
||||
players.addAll(sa.getActivatingPlayer().getOpponents());
|
||||
players.remove(game.getCombat().getDefendingPlayerRelatedTo(card));
|
||||
}
|
||||
else if (defined.equals("ChosenPlayer")) {
|
||||
final Player p = card.getChosenPlayer();
|
||||
if (p != null && !players.contains(p)) {
|
||||
|
||||
@@ -202,6 +202,10 @@ public class CopyPermanentEffect extends SpellAbilityEffect {
|
||||
defender = c.getController().getController().chooseSingleEntityForEffect(defs, sa, "Choose which defender to attack with " + c, false);
|
||||
} else {
|
||||
defender = AbilityUtils.getDefinedPlayers(hostCard, sa.getParam("CopyAttacking"), sa).get(0);
|
||||
if (sa.hasParam("ChoosePlayerOrPlaneswalker") && defender != null) {
|
||||
FCollectionView<GameEntity> defs = game.getCombat().getDefendersControlledBy((Player) defender);
|
||||
defender = c.getController().getController().chooseSingleEntityForEffect(defs, sa, "Choose which defender to attack with " + c + " {defender: "+ defender + "}", false);
|
||||
}
|
||||
}
|
||||
game.getCombat().addAttacker(copyInPlay, defender);
|
||||
game.fireEvent(new GameEventCombatChanged());
|
||||
@@ -241,6 +245,9 @@ public class CopyPermanentEffect extends SpellAbilityEffect {
|
||||
final String location = sa.getParam("AtEOT");
|
||||
registerDelayedTrigger(sa, location, crds);
|
||||
}
|
||||
if (sa.hasParam("ImprintCopied")) {
|
||||
hostCard.addImprintedCards(crds);
|
||||
}
|
||||
} // end canBeTargetedBy
|
||||
} // end foreach Card
|
||||
} // end resolve
|
||||
|
||||
@@ -2404,6 +2404,32 @@ public class CardFactoryUtil {
|
||||
card.setSVar("ProvokeAbility", abString);
|
||||
card.setSVar("ProvokeUntap", dbString);
|
||||
}
|
||||
else if (keyword.equals("Myriad")) {
|
||||
final String actualTrigger = "Mode$ Attacks | ValidCard$ Card.Self | Execute$ "
|
||||
+ "MyriadAbility | Secondary$ True | TriggerDescription$ Myriad (When this "
|
||||
+ "creature attacks, for each opponent other than defending player, you may"
|
||||
+ " put a token that's a copy of this creature onto the battlefield tapped "
|
||||
+ "and attacking that player or a planeswalker he or she controls. Exile the"
|
||||
+ " tokens at end of combat.)";
|
||||
final String abString = "DB$ RepeatEach | RepeatPlayers$ OpponentsOtherThanDefendingPlayer"
|
||||
+ " | RepeatSubAbility$ MyriadCopy | SubAbility$ MyriadDelTrig";
|
||||
final String dbString1 = "DB$ CopyPermanent | Defined$ Self | Tapped$ True | "
|
||||
+ "Optional$ True | CopyAttacking$ Remembered | ChoosePlayerOrPlaneswalker$"
|
||||
+ " True | ImprintCopied$ True";
|
||||
final String dbString2 = "DB$ DelayedTrigger | Mode$ Phase | Phase$ EndCombat | "
|
||||
+ "Execute$ MyriadExile | RememberObjects$ Imprinted | TriggerDescription$"
|
||||
+ " Exile the tokens at end of combat. | SubAbility$ MyriadCleanup";
|
||||
final String dbString3 = "DB$ ChangeZone | Defined$ DelayTriggerRemembered | Origin$"
|
||||
+ " Battlefield | Destination$ Exile";
|
||||
final String dbString4 = "DB$ Cleanup | ClearImprinted$ True";
|
||||
final Trigger parsedTrigger = TriggerHandler.parseTrigger(actualTrigger, card, true);
|
||||
card.addTrigger(parsedTrigger);
|
||||
card.setSVar("MyriadAbility", abString);
|
||||
card.setSVar("MyriadCopy", dbString1);
|
||||
card.setSVar("MyriadDelTrig", dbString2);
|
||||
card.setSVar("MyriadExile", dbString3);
|
||||
card.setSVar("MyriadCleanup", dbString4);
|
||||
}
|
||||
else if (keyword.equals("Living Weapon")) {
|
||||
card.removeIntrinsicKeyword(keyword);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user