- More cards ready for multiplayer

This commit is contained in:
moomarc
2013-01-04 15:32:21 +00:00
parent e731d7c66d
commit decf8b38cf
10 changed files with 46 additions and 11 deletions

View File

@@ -5,7 +5,7 @@ Text:no text
A:SP$ Dig | Cost$ 2/U 2/U 2/U | DigNum$ 4 | ChangeNum$ 1 | SubAbility$ Dig2 | ConditionCheckSVar$ X | ConditionSVarCompare$ LEY | References$ X,Y | SpellDescription$ Look at the top five cards of your library. If you control more creatures than each other player, put two of those cards into your hand. Otherwise, put one of them into your hand. Then put the rest on the bottom of your library in any order. A:SP$ Dig | Cost$ 2/U 2/U 2/U | DigNum$ 4 | ChangeNum$ 1 | SubAbility$ Dig2 | ConditionCheckSVar$ X | ConditionSVarCompare$ LEY | References$ X,Y | SpellDescription$ Look at the top five cards of your library. If you control more creatures than each other player, put two of those cards into your hand. Otherwise, put one of them into your hand. Then put the rest on the bottom of your library in any order.
SVar:Dig2:DB$ Dig | DigNum$ 4 | ChangeNum$ 2 | ConditionCheckSVar$ X | ConditionSVarCompare$ GTY | References$ X,Y SVar:Dig2:DB$ Dig | DigNum$ 4 | ChangeNum$ 2 | ConditionCheckSVar$ X | ConditionSVarCompare$ GTY | References$ X,Y
SVar:X:Count$Valid Creature.YouCtrl SVar:X:Count$Valid Creature.YouCtrl
SVar:Y:Count$Valid Creature.YouDontCtrl SVar:Y:PlayerCountOther$HighestValid Creature.YouCtrl
SVar:RemAIDeck:True SVar:RemAIDeck:True
SVar:Rarity:Uncommon SVar:Rarity:Uncommon
SVar:Picture:http://www.wizards.com/global/images/magic/general/advice_from_the_fae.jpg SVar:Picture:http://www.wizards.com/global/images/magic/general/advice_from_the_fae.jpg

View File

@@ -2,7 +2,7 @@ Name:Bond of Agony
ManaCost:X B ManaCost:X B
Types:Sorcery Types:Sorcery
Text:no text Text:no text
A:SP$ LoseLife | Cost$ X B PayLife<X> | Defined$ Opponent | LifeAmount$ X | References$ X | SpellDescription$ Each other player loses X life. A:SP$ LoseLife | Cost$ X B PayLife<X> | Defined$ Player.Other | LifeAmount$ X | References$ X | SpellDescription$ Each other player loses X life.
SVar:X:Count$xPaid SVar:X:Count$xPaid
SVar:RemAIDeck:True SVar:RemAIDeck:True
SVar:Rarity:Uncommon SVar:Rarity:Uncommon

View File

@@ -5,7 +5,7 @@ Text:no text
PT:3/3 PT:3/3
K:Flying K:Flying
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigChange | TriggerDescription$ When CARDNAME enters the battlefield, each other player may put an artifact or enchantment card onto the battlefield from his or her hand. T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigChange | TriggerDescription$ When CARDNAME enters the battlefield, each other player may put an artifact or enchantment card onto the battlefield from his or her hand.
SVar:TrigChange:AB$ ChangeZone | Cost$ 0 | Origin$ Hand | Destination$ Battlefield | ChangeType$ Artifact,Enchantment | DefinedPlayer$ Opponent | ChangeNum$ 1 SVar:TrigChange:AB$ ChangeZone | Cost$ 0 | Origin$ Hand | Destination$ Battlefield | ChangeType$ Artifact,Enchantment | DefinedPlayer$ Player.Other | ChangeNum$ 1
SVar:Rarity:Uncommon SVar:Rarity:Uncommon
SVar:Picture:http://www.wizards.com/global/images/magic/general/charmed_griffin.jpg SVar:Picture:http://www.wizards.com/global/images/magic/general/charmed_griffin.jpg
SetInfo:MMQ|Uncommon|http://magiccards.info/scans/en/mm/7.jpg SetInfo:MMQ|Uncommon|http://magiccards.info/scans/en/mm/7.jpg

View File

@@ -7,6 +7,7 @@ A:SP$ Attach | Cost$ 4 U | ValidTgts$ Player | AILogic$ Curse
T:Mode$ SpellCast | ValidCard$ Instant,Sorcery | ValidActivatingPlayer$ Player.EnchantedBy | Execute$ TrigCopy | TriggerZones$ Battlefield | OptionalDecider$ TriggeredCardOpponent | TriggerDescription$ Whenever enchanted player casts an instant or sorcery spell, each other player may copy that spell and may choose new targets for the copy he or she controls. T:Mode$ SpellCast | ValidCard$ Instant,Sorcery | ValidActivatingPlayer$ Player.EnchantedBy | Execute$ TrigCopy | TriggerZones$ Battlefield | OptionalDecider$ TriggeredCardOpponent | TriggerDescription$ Whenever enchanted player casts an instant or sorcery spell, each other player may copy that spell and may choose new targets for the copy he or she controls.
SVar:TrigCopy:AB$ CopySpellAbility | Cost$ 0 | Defined$ TriggeredSpellAbility | Controller$ TriggeredCardOpponent SVar:TrigCopy:AB$ CopySpellAbility | Cost$ 0 | Defined$ TriggeredSpellAbility | Controller$ TriggeredCardOpponent
SVar:RemAIDeck:True SVar:RemAIDeck:True
SVar:RemMultiplayer:True
SVar:Rarity:Rare SVar:Rarity:Rare
SVar:Picture:http://www.wizards.com/global/images/magic/general/curse_of_echoes.jpg SVar:Picture:http://www.wizards.com/global/images/magic/general/curse_of_echoes.jpg
SetInfo:DKA|Rare|http://magiccards.info/scans/en/dka/34.jpg SetInfo:DKA|Rare|http://magiccards.info/scans/en/dka/34.jpg

View File

@@ -3,8 +3,9 @@ ManaCost:3 B
Types:Creature Horror Types:Creature Horror
Text:no text Text:no text
PT:4/4 PT:4/4
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigChange | TriggerDescription$ When CARDNAME enters the battlefield, each other player may return a creature card from his or her graveyard to the battlefield. T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ RepeatPlayers | TriggerDescription$ When CARDNAME enters the battlefield, each other player may return a creature card from his or her graveyard to the battlefield.
SVar:TrigChange:AB$ChangeZone | Cost$ 0 | Origin$ Graveyard | Destination$ Battlefield | ChangeType$ Creature.YouDontCtrl | DefinedPlayer$ Opponent | ChangeNum$ 1 | Hidden$ True | Optional$ True SVar:RepeatPlayers:AB$ RepeatEach | Cost$ 0 | RepeatPlayers$ Player | RepeatSubAbility$ TrigChange
SVar:TrigChange:DB$ ChangeZone | Cost$ 0 | Origin$ Graveyard | Destination$ Battlefield | ChangeType$ Creature.RememberedPlayerCtrl | DefinedPlayer$ Player.Opponent | ChangeNum$ 1 | Hidden$ True | Optional$ True
SVar:RemAIDeck:True SVar:RemAIDeck:True
SVar:Rarity:Uncommon SVar:Rarity:Uncommon
SVar:Picture:http://www.wizards.com/global/images/magic/general/enslaved_horror.jpg SVar:Picture:http://www.wizards.com/global/images/magic/general/enslaved_horror.jpg

View File

@@ -3,11 +3,8 @@ ManaCost:G
Types:Creature Ogre Types:Creature Ogre
Text:no text Text:no text
PT:2/2 PT:2/2
T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Battlefield | LifeTotal$ Opponent | LifeAmount$ GTX | Execute$ TrigOppControl | TriggerDescription$ At the beginning of your upkeep, if a player has more life than each other player, the player with the most life gains control of CARDNAME. T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Battlefield | APlayerHasMoreLifeThanEachOther$ True | LifeAmount$ GTX | Execute$ TrigOppControl | TriggerDescription$ At the beginning of your upkeep, if a player has more life than each other player, the player with the most life gains control of CARDNAME.
SVar:TrigOppControl:AB$ GainControl | Cost$ 0 | Defined$ Self | NewController$ Opponent SVar:TrigOppControl:AB$ GainControl | Cost$ 0 | Defined$ Self | NewController$ Player.withMostLife
SVar:X:Count$YourLifeTotal
T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Battlefield | LifeTotal$ You | LifeAmount$ GTY | Execute$ TrigYouControl | Secondary$ True | TriggerDescription$ At the beginning of your upkeep, if a player has more life than each other player, the player with the most life gains control of CARDNAME.
SVar:TrigYouControl:AB$ GainControl | Cost$ 0 | Defined$ Self | NewController$ You
SVar:Y:Count$OppLifeTotal SVar:Y:Count$OppLifeTotal
SVar:RemAIDeck:True SVar:RemAIDeck:True
SVar:Rarity:Common SVar:Rarity:Common

View File

@@ -3,7 +3,7 @@ ManaCost:1 B B B
Types:Enchantment Types:Enchantment
Text:no text Text:no text
T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Creature.YouCtrl | TriggerZones$ Battlefield | Execute$ TrigSac | TriggerDescription$ Whenever a creature you control is put into a graveyard from the battlefield, each other player sacrifices a creature. T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Creature.YouCtrl | TriggerZones$ Battlefield | Execute$ TrigSac | TriggerDescription$ Whenever a creature you control is put into a graveyard from the battlefield, each other player sacrifices a creature.
SVar:TrigSac:AB$Sacrifice | Cost$ 0 | Defined$ Opponent | SacValid$ Creature SVar:TrigSac:AB$ Sacrifice | Cost$ 0 | Defined$ Player.Other | SacValid$ Creature
SVar:Rarity:Rare SVar:Rarity:Rare
SVar:Picture:http://www.wizards.com/global/images/magic/general/grave_pact.jpg SVar:Picture:http://www.wizards.com/global/images/magic/general/grave_pact.jpg
SetInfo:8ED|Rare|http://magiccards.info/scans/en/8e/137.jpg SetInfo:8ED|Rare|http://magiccards.info/scans/en/8e/137.jpg

View File

@@ -552,6 +552,9 @@ public class AbilityFactory {
} else if (hType.equals("Opponents")) { } else if (hType.equals("Opponents")) {
players.addAll(card.getController().getOpponents()); players.addAll(card.getController().getOpponents());
return CardFactoryUtil.playerXCount(players, calcX[1], card) * multiplier; return CardFactoryUtil.playerXCount(players, calcX[1], card) * multiplier;
} else if (hType.equals("Other")) {
players.addAll(card.getController().getAllOtherPlayers());
return CardFactoryUtil.playerXCount(players, calcX[1], card) * multiplier;
} else if (hType.equals("Remembered")) { } else if (hType.equals("Remembered")) {
for (final Object o : card.getRemembered()) { for (final Object o : card.getRemembered()) {
if (o instanceof Player) { if (o instanceof Player) {

View File

@@ -34,6 +34,7 @@ import forge.card.spellability.Ability;
import forge.card.spellability.SpellAbility; import forge.card.spellability.SpellAbility;
import forge.game.phase.PhaseHandler; import forge.game.phase.PhaseHandler;
import forge.game.phase.PhaseType; import forge.game.phase.PhaseType;
import forge.game.player.Player;
import forge.game.zone.ZoneType; import forge.game.zone.ZoneType;
import forge.util.Expressions; import forge.util.Expressions;
@@ -335,6 +336,26 @@ public abstract class Trigger extends TriggerReplacementBase {
} }
if (this.getMapParams().containsKey("APlayerHasMoreLifeThanEachOther")) {
int highestLife = -50; // Negative base just in case a few Lich's or Platinum Angels are running around
final List<Player> healthiest = new ArrayList<Player>();
for (final Player p : Singletons.getModel().getGame().getPlayers()) {
if (p.getLife() > highestLife) {
healthiest.clear();
highestLife = p.getLife();
healthiest.add(p);
} else if (p.getLife() == highestLife) {
highestLife = p.getLife();
healthiest.add(p);
}
}
if (healthiest.size() != 1) {
// More than one player tied for most life
return false;
}
}
if (this.getMapParams().containsKey("IsPresent")) { if (this.getMapParams().containsKey("IsPresent")) {
final String sIsPresent = this.getMapParams().get("IsPresent"); final String sIsPresent = this.getMapParams().get("IsPresent");
String presentCompare = "GE1"; String presentCompare = "GE1";

View File

@@ -2589,6 +2589,18 @@ public abstract class Player extends GameEntity implements Comparable<Player> {
if (oppList.size() <= yourList.size()) { if (oppList.size() <= yourList.size()) {
return false; return false;
} }
} else if (property.startsWith("withMostLife")) {
int highestLife = -50; // Negative base just in case a few Lich's are running around
Player healthiest = null;
for (final Player p : Singletons.getModel().getGame().getPlayers()) {
if (p.getLife() > highestLife) {
highestLife = p.getLife();
healthiest = p;
}
}
if (!this.equals(healthiest)) {
return false;
}
} }
return true; return true;