mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-20 04:38:00 +00:00
- Changed getDefendingPlayerRelatedTo to return a list instead of a single player (which brings it closer to the rules).
- Added Yare.
This commit is contained in:
@@ -6358,12 +6358,10 @@ public class Card extends GameEntity implements Comparable<Card> {
|
||||
return false;
|
||||
}
|
||||
} else if (property.startsWith("DefenderCtrl")) {
|
||||
Combat combat = Singletons.getModel().getGame().getCombat();
|
||||
if (!Singletons.getModel().getGame().getPhaseHandler().inCombat()) {
|
||||
return false;
|
||||
}
|
||||
Player defender = combat.getDefendingPlayerRelatedTo(source);
|
||||
if (!this.getController().equals(defender)) {
|
||||
if (!Singletons.getModel().getGame().getCombat().getDefendingPlayerRelatedTo(source).contains(this.getController())) {
|
||||
return false;
|
||||
}
|
||||
} else if (property.startsWith("EnchantedPlayerCtrl")) {
|
||||
|
||||
@@ -855,10 +855,7 @@ public class AbilityUtils {
|
||||
players.add(p);
|
||||
}
|
||||
} else if (defined.equals("DefendingPlayer")) {
|
||||
final Player p = Singletons.getModel().getGame().getCombat().getDefendingPlayerRelatedTo(card);
|
||||
if (!players.contains(p)) {
|
||||
players.add(p);
|
||||
}
|
||||
players.addAll(Singletons.getModel().getGame().getCombat().getDefendingPlayerRelatedTo(card));
|
||||
} else if (defined.equals("ChosenPlayer")) {
|
||||
final Player p = card.getChosenPlayer();
|
||||
if (!players.contains(p)) {
|
||||
|
||||
@@ -546,7 +546,8 @@ public class Combat {
|
||||
* a {@link forge.Card} object.
|
||||
* @return a {@link forge.Player} object.
|
||||
*/
|
||||
public Player getDefendingPlayerRelatedTo(final Card source) {
|
||||
public List<Player> getDefendingPlayerRelatedTo(final Card source) {
|
||||
List<Player> players = new ArrayList<Player>();
|
||||
Card attacker = source;
|
||||
if (source.isAura()) {
|
||||
attacker = source.getEnchantingCard();
|
||||
@@ -554,13 +555,21 @@ public class Combat {
|
||||
attacker = source.getEquippingCard();
|
||||
}
|
||||
|
||||
// return the corresponding defender
|
||||
Player defender = getDefenderPlayerByAttacker(attacker);
|
||||
if (null == defender) { // too bad, have to choose now
|
||||
// don't have ui, cannot choose - have to getOpponent
|
||||
// that's inaccurate. That opponent may be not even a defender
|
||||
defender = source.getController().getOpponent();
|
||||
if (null != defender) {
|
||||
players.add(defender);
|
||||
return players;
|
||||
}
|
||||
return defender;
|
||||
|
||||
// return all defenders
|
||||
List<GameEntity> defenders = this.getDefenders();
|
||||
for (GameEntity ge : defenders) {
|
||||
if (ge instanceof Player) {
|
||||
players.add((Player) ge);
|
||||
}
|
||||
}
|
||||
return players;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -278,7 +278,10 @@ public class CombatUtil {
|
||||
}
|
||||
|
||||
String valid = StringUtils.join(walkTypes, ",");
|
||||
final Player defendingPlayer = Singletons.getModel().getGame().getCombat().getDefendingPlayerRelatedTo(attacker);
|
||||
Player defendingPlayer = attacker.getController().getOpponent();
|
||||
if (attacker.isAttacking()) {
|
||||
defendingPlayer = Singletons.getModel().getGame().getCombat().getDefendingPlayerRelatedTo(attacker).get(0);
|
||||
}
|
||||
List<Card> defendingLands = defendingPlayer.getCardsIn(ZoneType.Battlefield);
|
||||
for (Card c : defendingLands) {
|
||||
if (c.isValid(valid.split(","), defendingPlayer, attacker)) {
|
||||
@@ -1225,7 +1228,7 @@ public class CombatUtil {
|
||||
@Override
|
||||
public void resolve() {
|
||||
this.api = ApiType.Sacrifice;
|
||||
final Player opponent = Singletons.getModel().getGame().getCombat().getDefendingPlayerRelatedTo(c);
|
||||
final Player opponent = Singletons.getModel().getGame().getCombat().getDefendingPlayerRelatedTo(c).get(0);
|
||||
//List<Card> list = AbilityUtils.filterListByType(opponent.getCardsIn(ZoneType.Battlefield), "Permanent", this);
|
||||
final List<Card> list = opponent.getCardsIn(ZoneType.Battlefield);
|
||||
List<Card> toSac = opponent.getController().choosePermanentsToSacrifice(list, a, this, false, false);
|
||||
|
||||
Reference in New Issue
Block a user