mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-19 20:28:00 +00:00
add Dawnbreak Reclaimer, with extra logic in ChangeZoneAllAi
This commit is contained in:
1
.gitattributes
vendored
1
.gitattributes
vendored
@@ -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_of_the_dead.txt svneol=native#text/plain
|
||||
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/dawnfluke.txt -text
|
||||
forge-gui/res/cardsfolder/d/dawnglare_invoker.txt svneol=native#text/plain
|
||||
|
||||
@@ -15,6 +15,7 @@ import forge.game.card.CounterType;
|
||||
import forge.game.cost.Cost;
|
||||
import forge.game.phase.PhaseType;
|
||||
import forge.game.player.Player;
|
||||
import forge.game.player.PlayerActionConfirmMode;
|
||||
import forge.game.spellability.SpellAbility;
|
||||
import forge.game.spellability.TargetRestrictions;
|
||||
import forge.game.zone.ZoneType;
|
||||
@@ -226,6 +227,37 @@ public class ChangeZoneAllAi extends SpellAbilityAi {
|
||||
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
|
||||
protected boolean doTriggerAINoCost(Player ai, SpellAbility sa, boolean mandatory) {
|
||||
|
||||
26
forge-gui/res/cardsfolder/d/dawnbreak_reclaimer.txt
Normal file
26
forge-gui/res/cardsfolder/d/dawnbreak_reclaimer.txt
Normal 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.
|
||||
Reference in New Issue
Block a user