mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-15 10:18:01 +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) {
|
||||
return getTargetPlayers(sa, params, false);
|
||||
return getTargetPlayers(sa, params, false, true);
|
||||
}
|
||||
|
||||
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 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 String defined = params.get("Defined");
|
||||
if ( tgt != null ) return tgt.getTargetPlayers();
|
||||
if ( StringUtils.isEmpty(defined) && wantEmptyAsDefault ) return emptyPlayerList;
|
||||
if ( tgt != null && ( targetIsPreferred || ( StringUtils.isEmpty(defined) && !wantEmptyAsDefault ) ) )
|
||||
return tgt.getTargetPlayers();
|
||||
if ( StringUtils.isEmpty(defined) && wantEmptyAsDefault )
|
||||
return emptyPlayerList;
|
||||
return AbilityFactory.getDefinedPlayers(sa.getSourceCard(), defined, sa);
|
||||
}
|
||||
|
||||
|
||||
@@ -24,7 +24,7 @@ public class DrawEffect extends SpellEffect {
|
||||
sb.append(conditionDesc).append(" ");
|
||||
}
|
||||
|
||||
final List<Player> tgtPlayers = getTargetPlayers(sa, params);
|
||||
final List<Player> tgtPlayers = getDefinedPlayersBeforeTargetOnes(sa, params);
|
||||
|
||||
|
||||
if (!tgtPlayers.isEmpty()) {
|
||||
@@ -68,7 +68,7 @@ public class DrawEffect extends SpellEffect {
|
||||
final boolean optional = params.containsKey("OptionalDecider");
|
||||
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 (optional) {
|
||||
if (p.isComputer()) {
|
||||
|
||||
Reference in New Issue
Block a user