mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-20 12:48:00 +00:00
Merge branch 'zara' into 'master'
CMR: Zara and ChangeZoneEffect support See merge request core-developers/forge!3330
This commit is contained in:
@@ -619,11 +619,20 @@ public class ChangeZoneEffect extends SpellAbilityEffect {
|
|||||||
if (sa.hasParam("Attacking")) {
|
if (sa.hasParam("Attacking")) {
|
||||||
final Combat combat = game.getCombat();
|
final Combat combat = game.getCombat();
|
||||||
if (null != combat) {
|
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;
|
GameEntity defender = null;
|
||||||
if (sa.hasParam("DefinedDefender")) {
|
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) {
|
for(GameObject obj : objs) {
|
||||||
if (obj instanceof GameEntity) {
|
if (obj instanceof GameEntity) {
|
||||||
defender = (GameEntity)obj;
|
defender = (GameEntity)obj;
|
||||||
@@ -634,7 +643,8 @@ public class ChangeZoneEffect extends SpellAbilityEffect {
|
|||||||
String title = Localizer.getInstance().getMessage("lblChooseDefenderToAttackWithCard", CardTranslation.getTranslatedName(movedCard.getName()));
|
String title = Localizer.getInstance().getMessage("lblChooseDefenderToAttackWithCard", CardTranslation.getTranslatedName(movedCard.getName()));
|
||||||
Map<String, Object> params = Maps.newHashMap();
|
Map<String, Object> params = Maps.newHashMap();
|
||||||
params.put("Attacker", movedCard);
|
params.put("Attacker", movedCard);
|
||||||
defender = player.getController().chooseSingleEntityForEffect(e, sa, title, params);
|
defender = player.getController().chooseSingleEntityForEffect(defs, sa, title,false,
|
||||||
|
params);
|
||||||
}
|
}
|
||||||
if (defender != null) {
|
if (defender != null) {
|
||||||
combat.addAttacker(movedCard, defender);
|
combat.addAttacker(movedCard, defender);
|
||||||
@@ -1141,11 +1151,21 @@ public class ChangeZoneEffect extends SpellAbilityEffect {
|
|||||||
if (sa.hasParam("Attacking")) {
|
if (sa.hasParam("Attacking")) {
|
||||||
final Combat combat = game.getCombat();
|
final Combat combat = game.getCombat();
|
||||||
if (null != combat) {
|
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;
|
GameEntity defender = null;
|
||||||
if (sa.hasParam("DefinedDefender")) {
|
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) {
|
for (GameObject obj : objs) {
|
||||||
if (obj instanceof GameEntity) {
|
if (obj instanceof GameEntity) {
|
||||||
defender = (GameEntity) obj;
|
defender = (GameEntity) obj;
|
||||||
@@ -1153,10 +1173,12 @@ public class ChangeZoneEffect extends SpellAbilityEffect {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} 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();
|
Map<String, Object> params = Maps.newHashMap();
|
||||||
params.put("Attacker", c);
|
params.put("Attacker", c);
|
||||||
defender = player.getController().chooseSingleEntityForEffect(e, sa, title, params);
|
defender = decider.getController().chooseSingleEntityForEffect(defs, sa, title,false,
|
||||||
|
params);
|
||||||
}
|
}
|
||||||
if (defender != null) {
|
if (defender != null) {
|
||||||
combat.addAttacker(c, defender);
|
combat.addAttacker(c, defender);
|
||||||
|
|||||||
10
forge-gui/res/cardsfolder/upcoming/zara_renegade_recruiter.txt
Executable file
10
forge-gui/res/cardsfolder/upcoming/zara_renegade_recruiter.txt
Executable 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.
|
||||||
Reference in New Issue
Block a user