mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-15 18:28:00 +00:00
AF: Draw used even a different target player picking priority.
This commit is contained in:
@@ -83,19 +83,29 @@ import forge.game.player.Player;
|
|||||||
}
|
}
|
||||||
|
|
||||||
protected List<Player> getTargetPlayers(SpellAbility sa, final Map<String, String> params) {
|
protected List<Player> getTargetPlayers(SpellAbility sa, final Map<String, String> params) {
|
||||||
return getTargetPlayers(sa, params, false);
|
return getTargetPlayers(sa, params, false, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected List<Player> getTargetPlayersEmptyAsDefault(SpellAbility sa, final Map<String, String> params) {
|
protected List<Player> getTargetPlayersEmptyAsDefault(SpellAbility sa, final Map<String, String> params) {
|
||||||
return getTargetPlayers(sa, params, true);
|
return getTargetPlayers(sa, params, true, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected List<Player> getDefinedPlayersBeforeTargetOnes(SpellAbility sa, final Map<String, String> params) {
|
||||||
|
return getTargetPlayers(sa, params, false, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Each AF used its own preference in choosing target players:
|
||||||
|
// Some checked target first and params["Defined"] then - @see targetIsPreferred
|
||||||
|
// Some wanted empty list when params["Defined"] was not set - @see wantEmptyAsDefault
|
||||||
|
// Poor me had to gather it all in a single place
|
||||||
private final static List<Player> emptyPlayerList = Collections.unmodifiableList(new ArrayList<Player>());
|
private final static List<Player> emptyPlayerList = Collections.unmodifiableList(new ArrayList<Player>());
|
||||||
private List<Player> getTargetPlayers(SpellAbility sa, final Map<String, String> params, final boolean wantEmptyAsDefault) {
|
private List<Player> getTargetPlayers(SpellAbility sa, final Map<String, String> params, final boolean wantEmptyAsDefault, final boolean targetIsPreferred) {
|
||||||
final Target tgt = sa.getTarget();
|
final Target tgt = sa.getTarget();
|
||||||
final String defined = params.get("Defined");
|
final String defined = params.get("Defined");
|
||||||
if ( tgt != null ) return tgt.getTargetPlayers();
|
if ( tgt != null && ( targetIsPreferred || ( StringUtils.isEmpty(defined) && !wantEmptyAsDefault ) ) )
|
||||||
if ( StringUtils.isEmpty(defined) && wantEmptyAsDefault ) return emptyPlayerList;
|
return tgt.getTargetPlayers();
|
||||||
|
if ( StringUtils.isEmpty(defined) && wantEmptyAsDefault )
|
||||||
|
return emptyPlayerList;
|
||||||
return AbilityFactory.getDefinedPlayers(sa.getSourceCard(), defined, sa);
|
return AbilityFactory.getDefinedPlayers(sa.getSourceCard(), defined, sa);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ public class DrawEffect extends SpellEffect {
|
|||||||
sb.append(conditionDesc).append(" ");
|
sb.append(conditionDesc).append(" ");
|
||||||
}
|
}
|
||||||
|
|
||||||
final List<Player> tgtPlayers = getTargetPlayers(sa, params);
|
final List<Player> tgtPlayers = getDefinedPlayersBeforeTargetOnes(sa, params);
|
||||||
|
|
||||||
|
|
||||||
if (!tgtPlayers.isEmpty()) {
|
if (!tgtPlayers.isEmpty()) {
|
||||||
@@ -68,7 +68,7 @@ public class DrawEffect extends SpellEffect {
|
|||||||
final boolean optional = params.containsKey("OptionalDecider");
|
final boolean optional = params.containsKey("OptionalDecider");
|
||||||
final boolean slowDraw = params.containsKey("NextUpkeep");
|
final boolean slowDraw = params.containsKey("NextUpkeep");
|
||||||
|
|
||||||
for (final Player p : getTargetPlayers(sa, params)) {
|
for (final Player p : getDefinedPlayersBeforeTargetOnes(sa, params)) {
|
||||||
if ((tgt == null) || p.canBeTargetedBy(sa)) {
|
if ((tgt == null) || p.canBeTargetedBy(sa)) {
|
||||||
if (optional) {
|
if (optional) {
|
||||||
if (p.isComputer()) {
|
if (p.isComputer()) {
|
||||||
|
|||||||
Reference in New Issue
Block a user