Merge branch 'zara' into 'master'

CMR: Zara and ChangeZoneEffect support

See merge request core-developers/forge!3330
This commit is contained in:
Michael Kamensky
2020-11-04 15:41:21 +00:00
2 changed files with 45 additions and 13 deletions

View File

@@ -619,11 +619,20 @@ public class ChangeZoneEffect extends SpellAbilityEffect {
if (sa.hasParam("Attacking")) {
final Combat combat = game.getCombat();
if (null != combat) {
final FCollectionView<GameEntity> e = combat.getDefenders();
FCollectionView<GameEntity> defs = null;
String attacking = sa.getParam("Attacking");
if ("True".equalsIgnoreCase(attacking)) {
defs = combat.getDefenders();
} else if (sa.hasParam("ChoosePlayerOrPlaneswalker")) {
Player defendingPlayer = Iterables.getFirst(AbilityUtils.getDefinedPlayers(hostCard,
attacking, sa), null);
if (defendingPlayer != null) {
defs = combat.getDefendersControlledBy(defendingPlayer);
}
}
GameEntity defender = null;
if (sa.hasParam("DefinedDefender")) {
FCollection<GameObject> objs = AbilityUtils.getDefinedObjects(sa.getHostCard(), sa.getParam("DefinedDefender"), sa);
FCollection<GameObject> objs = AbilityUtils.getDefinedObjects(hostCard, sa.getParam("DefinedDefender"), sa);
for(GameObject obj : objs) {
if (obj instanceof GameEntity) {
defender = (GameEntity)obj;
@@ -634,7 +643,8 @@ public class ChangeZoneEffect extends SpellAbilityEffect {
String title = Localizer.getInstance().getMessage("lblChooseDefenderToAttackWithCard", CardTranslation.getTranslatedName(movedCard.getName()));
Map<String, Object> params = Maps.newHashMap();
params.put("Attacker", movedCard);
defender = player.getController().chooseSingleEntityForEffect(e, sa, title, params);
defender = player.getController().chooseSingleEntityForEffect(defs, sa, title,false,
params);
}
if (defender != null) {
combat.addAttacker(movedCard, defender);
@@ -1141,11 +1151,21 @@ public class ChangeZoneEffect extends SpellAbilityEffect {
if (sa.hasParam("Attacking")) {
final Combat combat = game.getCombat();
if (null != combat) {
final FCollectionView<GameEntity> e = combat.getDefenders();
FCollectionView<GameEntity> defs = null;
String attacking = sa.getParam("Attacking");
if ("True".equalsIgnoreCase(attacking)) {
defs = combat.getDefenders();
} else if (sa.hasParam("ChoosePlayerOrPlaneswalker")) {
Player defendingPlayer = Iterables.getFirst(AbilityUtils.getDefinedPlayers(source,
attacking, sa), null);
if (defendingPlayer != null) {
defs = combat.getDefendersControlledBy(defendingPlayer);
}
}
GameEntity defender = null;
if (sa.hasParam("DefinedDefender")) {
FCollection<GameObject> objs = AbilityUtils.getDefinedObjects(source, sa.getParam("DefinedDefender"), sa);
FCollection<GameObject> objs = AbilityUtils.getDefinedObjects(source,
sa.getParam("DefinedDefender"), sa);
for (GameObject obj : objs) {
if (obj instanceof GameEntity) {
defender = (GameEntity) obj;
@@ -1153,10 +1173,12 @@ public class ChangeZoneEffect extends SpellAbilityEffect {
}
}
} else {
String title = Localizer.getInstance().getMessage("lblChooseDefenderToAttackWithCard", CardTranslation.getTranslatedName(c.getName()));
String title = Localizer.getInstance().getMessage("lblChooseDefenderToAttackWithCard",
CardTranslation.getTranslatedName(c.getName()));
Map<String, Object> params = Maps.newHashMap();
params.put("Attacker", c);
defender = player.getController().chooseSingleEntityForEffect(e, sa, title, params);
defender = decider.getController().chooseSingleEntityForEffect(defs, sa, title,false,
params);
}
if (defender != null) {
combat.addAttacker(c, defender);

View File

@@ -0,0 +1,10 @@
Name:Zara, Renegade Recruiter
ManaCost:3 U R
Types:Legendary Creature Human Pirate
PT:4/3
T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigBorrow | TriggerDescription$ Whenever CARDNAME attacks, look at defending player's hand. You may put a creature card from it onto the battlefield under your control tapped and attacking that player or a planeswalker they control. Return that creature to its owner's hand at the beginning of the next end step.
SVar:TrigBorrow:DB$ ChangeZone | ChangeNum$ 1 | DefinedPlayer$ TriggeredDefendingPlayer | Chooser$ You | ChangeType$ Creature | Origin$ Hand | Destination$ Battlefield | GainControl$ True | Tapped$ True | Attacking$ DefendingPlayer | ChoosePlayerOrPlaneswalker$ True | RememberChanged$ True | SubAbility$ DBDelayTrig
SVar:DBDelayTrig:DB$ DelayedTrigger | Mode$ Phase | Phase$ End of Turn | ValidPlayer$ Player | RememberObjects$ Remembered | Execute$ DBChange | StackDescription$ None | SubAbility$ DBCleanup | TriggerDescription$ Return that creature to its owner's hand at the beginning of the next end step.
SVar:DBChange:DB$ ChangeZone | Defined$ DelayTriggerRemembered | Origin$ Battlefield | Destination$ Hand
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
Oracle:Flying\nWhenever Zara, Renegade Recruiter attacks, look at defending player's hand. You may put a creature card from it onto the battlefield under your control tapped and attacking that player or a planeswalker they control. Return that creature to its owner's hand at the beginning of the next end step.