mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-20 12:48: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:
1
.gitattributes
vendored
1
.gitattributes
vendored
@@ -12298,6 +12298,7 @@ res/cardsfolder/x/xira_arien.txt svneol=native#text/plain
|
|||||||
res/cardsfolder/x/xun_yu_wei_advisor.txt svneol=native#text/plain
|
res/cardsfolder/x/xun_yu_wei_advisor.txt svneol=native#text/plain
|
||||||
res/cardsfolder/y/yamabushis_flame.txt svneol=native#text/plain
|
res/cardsfolder/y/yamabushis_flame.txt svneol=native#text/plain
|
||||||
res/cardsfolder/y/yamabushis_storm.txt -text
|
res/cardsfolder/y/yamabushis_storm.txt -text
|
||||||
|
res/cardsfolder/y/yare.txt -text
|
||||||
res/cardsfolder/y/yavimaya_ancients.txt svneol=native#text/plain
|
res/cardsfolder/y/yavimaya_ancients.txt svneol=native#text/plain
|
||||||
res/cardsfolder/y/yavimaya_ants.txt svneol=native#text/plain
|
res/cardsfolder/y/yavimaya_ants.txt svneol=native#text/plain
|
||||||
res/cardsfolder/y/yavimaya_barbarian.txt svneol=native#text/plain
|
res/cardsfolder/y/yavimaya_barbarian.txt svneol=native#text/plain
|
||||||
|
|||||||
8
res/cardsfolder/y/yare.txt
Normal file
8
res/cardsfolder/y/yare.txt
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
Name:Yare
|
||||||
|
ManaCost:2 W
|
||||||
|
Types:Instant
|
||||||
|
A:SP$ Pump | Cost$ 2 W | ValidTgts$ Creature.DefenderCtrl | TgtPrompt$ Select target creature defending player controls | NumAtt$ 3 | KW$ HIDDEN CARDNAME can block an additional creature. & HIDDEN CARDNAME can block an additional creature. | SpellDescription$ Target creature defending player controls gets +3/+0 until end of turn. That creature can block up to two additional creatures this turn.
|
||||||
|
SVar:RemAIDeck:True
|
||||||
|
SVar:Picture:http://www.wizards.com/global/images/magic/general/yare.jpg
|
||||||
|
Oracle:Target creature defending player controls gets +3/+0 until end of turn. That creature can block up to two additional creatures this turn.
|
||||||
|
SetInfo:MIR Rare
|
||||||
@@ -6358,12 +6358,10 @@ public class Card extends GameEntity implements Comparable<Card> {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
} else if (property.startsWith("DefenderCtrl")) {
|
} else if (property.startsWith("DefenderCtrl")) {
|
||||||
Combat combat = Singletons.getModel().getGame().getCombat();
|
|
||||||
if (!Singletons.getModel().getGame().getPhaseHandler().inCombat()) {
|
if (!Singletons.getModel().getGame().getPhaseHandler().inCombat()) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
Player defender = combat.getDefendingPlayerRelatedTo(source);
|
if (!Singletons.getModel().getGame().getCombat().getDefendingPlayerRelatedTo(source).contains(this.getController())) {
|
||||||
if (!this.getController().equals(defender)) {
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
} else if (property.startsWith("EnchantedPlayerCtrl")) {
|
} else if (property.startsWith("EnchantedPlayerCtrl")) {
|
||||||
|
|||||||
@@ -855,10 +855,7 @@ public class AbilityUtils {
|
|||||||
players.add(p);
|
players.add(p);
|
||||||
}
|
}
|
||||||
} else if (defined.equals("DefendingPlayer")) {
|
} else if (defined.equals("DefendingPlayer")) {
|
||||||
final Player p = Singletons.getModel().getGame().getCombat().getDefendingPlayerRelatedTo(card);
|
players.addAll(Singletons.getModel().getGame().getCombat().getDefendingPlayerRelatedTo(card));
|
||||||
if (!players.contains(p)) {
|
|
||||||
players.add(p);
|
|
||||||
}
|
|
||||||
} else if (defined.equals("ChosenPlayer")) {
|
} else if (defined.equals("ChosenPlayer")) {
|
||||||
final Player p = card.getChosenPlayer();
|
final Player p = card.getChosenPlayer();
|
||||||
if (!players.contains(p)) {
|
if (!players.contains(p)) {
|
||||||
|
|||||||
@@ -546,7 +546,8 @@ public class Combat {
|
|||||||
* a {@link forge.Card} object.
|
* a {@link forge.Card} object.
|
||||||
* @return a {@link forge.Player} 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;
|
Card attacker = source;
|
||||||
if (source.isAura()) {
|
if (source.isAura()) {
|
||||||
attacker = source.getEnchantingCard();
|
attacker = source.getEnchantingCard();
|
||||||
@@ -554,13 +555,21 @@ public class Combat {
|
|||||||
attacker = source.getEquippingCard();
|
attacker = source.getEquippingCard();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// return the corresponding defender
|
||||||
Player defender = getDefenderPlayerByAttacker(attacker);
|
Player defender = getDefenderPlayerByAttacker(attacker);
|
||||||
if (null == defender) { // too bad, have to choose now
|
if (null != defender) {
|
||||||
// don't have ui, cannot choose - have to getOpponent
|
players.add(defender);
|
||||||
// that's inaccurate. That opponent may be not even a defender
|
return players;
|
||||||
defender = source.getController().getOpponent();
|
|
||||||
}
|
}
|
||||||
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, ",");
|
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);
|
List<Card> defendingLands = defendingPlayer.getCardsIn(ZoneType.Battlefield);
|
||||||
for (Card c : defendingLands) {
|
for (Card c : defendingLands) {
|
||||||
if (c.isValid(valid.split(","), defendingPlayer, attacker)) {
|
if (c.isValid(valid.split(","), defendingPlayer, attacker)) {
|
||||||
@@ -1225,7 +1228,7 @@ public class CombatUtil {
|
|||||||
@Override
|
@Override
|
||||||
public void resolve() {
|
public void resolve() {
|
||||||
this.api = ApiType.Sacrifice;
|
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);
|
//List<Card> list = AbilityUtils.filterListByType(opponent.getCardsIn(ZoneType.Battlefield), "Permanent", this);
|
||||||
final List<Card> list = opponent.getCardsIn(ZoneType.Battlefield);
|
final List<Card> list = opponent.getCardsIn(ZoneType.Battlefield);
|
||||||
List<Card> toSac = opponent.getController().choosePermanentsToSacrifice(list, a, this, false, false);
|
List<Card> toSac = opponent.getController().choosePermanentsToSacrifice(list, a, this, false, false);
|
||||||
|
|||||||
Reference in New Issue
Block a user