mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-19 04:08:01 +00:00
Merge branch 'master' into 'master'
Some additional logic for Return from Extinction. See merge request core-developers/forge!1803
This commit is contained in:
@@ -71,6 +71,29 @@ public class ChangeZoneAi extends SpellAbilityAi {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
} else if (aiLogic.equals("NoSameCreatureType")) {
|
||||||
|
final List<ZoneType> origin = Lists.newArrayList();
|
||||||
|
if (sa.hasParam("Origin")) {
|
||||||
|
origin.addAll(ZoneType.listValueOf(sa.getParam("Origin")));
|
||||||
|
} else if (sa.hasParam("TgtZone")) {
|
||||||
|
origin.addAll(ZoneType.listValueOf(sa.getParam("TgtZone")));
|
||||||
|
}
|
||||||
|
CardCollection list = CardLists.getValidCards(ai.getGame().getCardsIn(origin),
|
||||||
|
sa.getTargetRestrictions().getValidTgts(), ai, sa.getHostCard(), sa);
|
||||||
|
|
||||||
|
final List<String> creatureTypes = Lists.newArrayList();
|
||||||
|
for (Card c : list) {
|
||||||
|
creatureTypes.addAll(c.getType().getCreatureTypes());
|
||||||
|
}
|
||||||
|
|
||||||
|
for (String type : creatureTypes) {
|
||||||
|
int freq = Collections.frequency(creatureTypes, type);
|
||||||
|
if (freq > 1) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
return super.checkAiLogic(ai, sa, aiLogic);
|
return super.checkAiLogic(ai, sa, aiLogic);
|
||||||
@@ -1194,6 +1217,15 @@ public class ChangeZoneAi extends SpellAbilityAi {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// honor the Same Creature Type restriction
|
||||||
|
if (sa.hasParam("TargetsWithSameCreatureType")) {
|
||||||
|
Card firstTarget = sa.getTargetCard();
|
||||||
|
if (firstTarget != null && !choice.sharesCreatureTypeWith(firstTarget)) {
|
||||||
|
list.remove(choice);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
list.remove(choice);
|
list.remove(choice);
|
||||||
sa.getTargets().add(choice);
|
sa.getTargets().add(choice);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,6 +2,6 @@ Name:Return from Extinction
|
|||||||
ManaCost:1 B
|
ManaCost:1 B
|
||||||
Types:Sorcery
|
Types:Sorcery
|
||||||
A:SP$ Charm | Cost$ 1 B | Choices$ DBChangeZone1,DBChangeZone2
|
A:SP$ Charm | Cost$ 1 B | Choices$ DBChangeZone1,DBChangeZone2
|
||||||
SVar:DBChangeZone1:DB$ ChangeZone | Origin$ Graveyard | Destination$ Hand | Mandatory$ True | TgtPrompt$ Select target creature card in your graveyard | ValidTgts$ Creature.YouOwn | SpellDescription$ Return target creature card from your graveyard to your hand.
|
SVar:DBChangeZone1:DB$ ChangeZone | Origin$ Graveyard | Destination$ Hand | Mandatory$ True | TgtPrompt$ Select target creature card in your graveyard | ValidTgts$ Creature.YouOwn | AILogic$ NoSameCreatureType | SpellDescription$ Return target creature card from your graveyard to your hand.
|
||||||
SVar:DBChangeZone2:DB$ ChangeZone | Origin$ Graveyard | Destination$ Hand | Mandatory$ True | TargetsWithSameCreatureType$ True | TargetMin$ 2 | TargetMax$ 2 | ValidTgts$ Creature.YouOwn | TgtPrompt$ Select two target creature cards that share a creature type in your graveyard | SpellDescription$ Return two target creature cards that share a creature type from your graveyard to your hand.
|
SVar:DBChangeZone2:DB$ ChangeZone | Origin$ Graveyard | Destination$ Hand | Mandatory$ True | TargetsWithSameCreatureType$ True | TargetMin$ 2 | TargetMax$ 2 | ValidTgts$ Creature.YouOwn | TgtPrompt$ Select two target creature cards that share a creature type in your graveyard | SpellDescription$ Return two target creature cards that share a creature type from your graveyard to your hand.
|
||||||
Oracle:Choose one -\n• Return target creature card from your graveyard to your hand.\n• Return two target creature cards that share a creature type from your graveyard to your hand.
|
Oracle:Choose one -\n• Return target creature card from your graveyard to your hand.\n• Return two target creature cards that share a creature type from your graveyard to your hand.
|
||||||
|
|||||||
Reference in New Issue
Block a user