add Dawnbreak Reclaimer, with extra logic in ChangeZoneAllAi

This commit is contained in:
Hanmac
2016-06-20 07:09:20 +00:00
parent 9e93551fb4
commit 9b6ce1a062
3 changed files with 59 additions and 0 deletions

1
.gitattributes vendored
View File

@@ -4406,6 +4406,7 @@ forge-gui/res/cardsfolder/d/dawn_charm.txt -text
forge-gui/res/cardsfolder/d/dawn_elemental.txt svneol=native#text/plain forge-gui/res/cardsfolder/d/dawn_elemental.txt svneol=native#text/plain
forge-gui/res/cardsfolder/d/dawn_of_the_dead.txt svneol=native#text/plain forge-gui/res/cardsfolder/d/dawn_of_the_dead.txt svneol=native#text/plain
forge-gui/res/cardsfolder/d/dawn_to_dusk.txt -text forge-gui/res/cardsfolder/d/dawn_to_dusk.txt -text
forge-gui/res/cardsfolder/d/dawnbreak_reclaimer.txt -text svneol=unset#text/plain
forge-gui/res/cardsfolder/d/dawnbringer_charioteers.txt -text forge-gui/res/cardsfolder/d/dawnbringer_charioteers.txt -text
forge-gui/res/cardsfolder/d/dawnfluke.txt -text forge-gui/res/cardsfolder/d/dawnfluke.txt -text
forge-gui/res/cardsfolder/d/dawnglare_invoker.txt svneol=native#text/plain forge-gui/res/cardsfolder/d/dawnglare_invoker.txt svneol=native#text/plain

View File

@@ -15,6 +15,7 @@ import forge.game.card.CounterType;
import forge.game.cost.Cost; import forge.game.cost.Cost;
import forge.game.phase.PhaseType; import forge.game.phase.PhaseType;
import forge.game.player.Player; import forge.game.player.Player;
import forge.game.player.PlayerActionConfirmMode;
import forge.game.spellability.SpellAbility; import forge.game.spellability.SpellAbility;
import forge.game.spellability.TargetRestrictions; import forge.game.spellability.TargetRestrictions;
import forge.game.zone.ZoneType; import forge.game.zone.ZoneType;
@@ -226,6 +227,37 @@ public class ChangeZoneAllAi extends SpellAbilityAi {
return true; return true;
} }
/* (non-Javadoc)
* @see forge.card.ability.SpellAbilityAi#confirmAction(forge.game.player.Player, forge.card.spellability.SpellAbility, forge.game.player.PlayerActionConfirmMode, java.lang.String)
*/
@Override
public boolean confirmAction(Player ai, SpellAbility sa, PlayerActionConfirmMode mode, String message) {
final Card source = sa.getHostCard();
final String hostName = source.getName();
final ZoneType origin = ZoneType.listValueOf(sa.getParam("Origin")).get(0);
if (hostName.equals("Dawnbreak Reclaimer")) {
final CardCollectionView cards = AbilityUtils.filterListByType(ai.getGame().getCardsIn(origin), sa.getParam("ChangeType"), sa);
// AI gets nothing
final CardCollection aiCards = CardLists.filterControlledBy(cards, ai);
if (aiCards.isEmpty())
return false;
// Human gets nothing
final CardCollection humanCards = CardLists.filterControlledBy(cards, ai.getOpponents());
if (humanCards.isEmpty())
return true;
// if AI creature is better than Human Creature
if (ComputerUtilCard.evaluateCreatureList(aiCards) >= ComputerUtilCard
.evaluateCreatureList(humanCards)) {
return true;
}
return false;
}
return true;
}
@Override @Override
protected boolean doTriggerAINoCost(Player ai, SpellAbility sa, boolean mandatory) { protected boolean doTriggerAINoCost(Player ai, SpellAbility sa, boolean mandatory) {

View File

@@ -0,0 +1,26 @@
Name:Dawnbreak Reclaimer
ManaCost:4 W W
Types:Creature Angel
PT:5/5
K:Flying
T:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ DBChooseCard | TriggerDescription$ At the beginning of your end step, choose a creature card in an opponent's graveyard, then that player chooses a creature card in your graveyard. You may return those cards to the battlefield under their owners' control.
SVar:DBChooseCard:AB$ ChooseCard | Cost$ 0 | Choices$ Creature.OppCtrl | ChoiceZone$ Graveyard | AILogic$ WorstCard | Mandatory$ True | Defined$ You | RememberChosen$ True | SubAbility$ DBChoosePlayer
SVar:DBChoosePlayer:DB$ ChoosePlayer | Choices$ Player.Opponent | Defined$ You | ConditionCheckSVar$ X | ConditionSVarCompare$ EQ0 | AILogic$ LeastCreatures | SubAbility$ DBChoosePlayer2
#needed to set ChosenPlayer to be ChosenCardController
SVar:DBChoosePlayer2:DB$ ChoosePlayer | Choices$ ChosenCardController | Defined$ You | ConditionCheckSVar$ X | ConditionSVarCompare$ GE1 | AILogic$ LeastCreatures | SubAbility$ DBChooseCard2
SVar:DBChooseCard2:DB$ ChooseCard | Choices$ Creature.YouCtrl | ChoiceZone$ Graveyard | Defined$ ChosenPlayer | AILogic$ WorstCard | Mandatory$ True | RememberChosen$ True | SubAbility$ DBReturn
#Add AILogic for Optional
SVar:DBReturn:DB$ChangeZoneAll | ChangeType$ Card.IsRemembered | Origin$ Graveyard | Destination$ Battlefield | Optional$ True | OptionQuestion$ Return TARGETS from graveyard to battlefield under their owners' control? | SubAbility$ DBCleanup
SVar:DBCleanup:DB$ Cleanup | ClearChosenCard$ True | ClearChosenPlayer$ True | ClearRemembered$ True
SVar:X:Count$ValidGraveyard Card.Chosen
SVar:Picture:http://www.wizards.com/global/images/magic/general/dawnbreak_reclaimer.jpg
Oracle:Flying\nAt the beginning of your end step, choose a creature card in an opponent's graveyard, then that player chooses a creature card in your graveyard. You may return those cards to the battlefield under their owners' control.