merge latest trunk

This commit is contained in:
myk
2013-03-15 17:19:13 +00:00
8 changed files with 8 additions and 94 deletions

View File

@@ -1,4 +1,4 @@
Forge Beta: 03-##-2013 ver 1.3.10 Forge Beta: 03-##-2013 ver 1.3.11
12### cards in total. 12### cards in total.
@@ -6,90 +6,11 @@ Forge Beta: 03-##-2013 ver 1.3.10
Release Notes: Release Notes:
A new quest world by Serrasmurf based on Ravinca has been added.
An effort is being made to implement the split cards (e.g. Fire/Ice) in Forge. The initial effort to add support for split cards may be considered complete and the relevant branch has reen reintegrated to trunk. Expect some rough edges and incompatibilities along the way.
The fat packs should now be available for purchase in the quest mode card shop.
Information for non-card items in spell shop are now shown in the card details panel.
Multiple problems with Convoke have been fixed.
Forge should now be the Magic rules enforcing program with the most supported cards! That means we finally beat MtGO! MtGO is missing 828 cards. Even subtracting the Power Nine, which were available in the MtGO cube for some time, that's more than we are missing (805) at the time this was written.
New Cards: New Cards:
Dimensional Breach
Lim-Dul's Vault
Eureka
Hypergenesis
Death by Dragons
Carpet of Flowers
Goblin Welder
Delaying Shield
Fatal Lore
Library of Lat-Nam
Misfortune
Assault // Battery
Fire // Ice
Night // Day
Trial // Error
Wax // Wane
Dead // Gone
Illusion // Reality
Life // Death
Pure // Simple
Rough // Tumble
Supply // Demand
Hide // Seek
Order // Chaos
Pain // Suffering
Spite // Malice
Stand // Deliver
Boom // Bust
Crime // Punishment
Rise // Fall
Bound // Determined
Hit // Run
Taniwha
Natural Balance
Balancing Act
Odds // Ends
Mana Clash
Goblin Assassin
Chain Lightning
Chain of Vapor
Vision Charm
Ooze Flux
Simic Manipulator
Ashling the Pilgrim
Inner-Flame Igniter
Novijen Sages
Trickbind
Yare
Mercadian Atlas
New Phenomenons:
New Planes:
Feeding Grounds
Horizon Boughs
New Schemes:
All in Good Time
New Vanguard Avatars:

View File

@@ -5,7 +5,7 @@
<artifactId>forge</artifactId> <artifactId>forge</artifactId>
<packaging>jar</packaging> <packaging>jar</packaging>
<name>Forge</name> <name>Forge</name>
<version>1.3.10-SNAPSHOT</version> <version>1.3.11-SNAPSHOT</version>
<description> <description>
Forge lets you play the card game Magic: The Gathering against a computer opponent Forge lets you play the card game Magic: The Gathering against a computer opponent
using all of the rules. using all of the rules.

View File

@@ -1,7 +1,7 @@
Name:Energy Field Name:Energy Field
ManaCost:1 U ManaCost:1 U
Types:Enchantment Types:Enchantment
T:Mode$ ChangesZone | Origin$ Any | Destination$ Graveyard | ValidCard$ Card.YouOwn | Execute$ TrigSac | TriggerZones$ Battlefield | TriggerDescription$ When a card is put into your graveyard from anywhere, sacrifice CARDNAME. T:Mode$ ChangesZone | Origin$ Any | Destination$ Graveyard | ValidCard$ Card.nonToken+YouOwn | Execute$ TrigSac | TriggerZones$ Battlefield | TriggerDescription$ When a card is put into your graveyard from anywhere, sacrifice CARDNAME.
SVar:TrigSac:AB$ Sacrifice | Cost$ 0 | Defined$ Self SVar:TrigSac:AB$ Sacrifice | Cost$ 0 | Defined$ Self
S:Mode$ PreventDamage | Target$ You | Source$ Card.YouDontCtrl | Description$ Prevent all damage that would be dealt to you by sources you don't control. S:Mode$ PreventDamage | Target$ You | Source$ Card.YouDontCtrl | Description$ Prevent all damage that would be dealt to you by sources you don't control.
SVar:RemAIDeck:True SVar:RemAIDeck:True

View File

@@ -5,7 +5,7 @@ R:Event$ Draw | ActiveZones$ Battlefield | ValidPlayer$ You | ReplaceWith$ Check
SVar:CheckLoseCondition:DB$ LosesGame | Defined$ You | ConditionCheckSVar$ CardsInGrave | ConditionSVarCompare$ EQ0 | SubAbility$ ForbiddenPractice SVar:CheckLoseCondition:DB$ LosesGame | Defined$ You | ConditionCheckSVar$ CardsInGrave | ConditionSVarCompare$ EQ0 | SubAbility$ ForbiddenPractice
SVar:ForbiddenPractice:DB$ ChangeZone | Hidden$ True | Mandatory$ True | ChangeType$ Card.YouOwn | ChangeNum$ 1 | Origin$ Graveyard | Destination$ Hand SVar:ForbiddenPractice:DB$ ChangeZone | Hidden$ True | Mandatory$ True | ChangeType$ Card.YouOwn | ChangeNum$ 1 | Origin$ Graveyard | Destination$ Hand
SVar:CardsInGrave:Count$InYourYard SVar:CardsInGrave:Count$InYourYard
R:Event$ Moved | ActiveZones$ Battlefield | Destination$ Graveyard | ValidCard$ Card.YouOwn | ReplaceWith$ CryptExile | Description$ If a card would be put into your graveyard from anywhere, exile that card instead. R:Event$ Moved | ActiveZones$ Battlefield | Destination$ Graveyard | ValidCard$ Card.nonToken+YouOwn | ReplaceWith$ CryptExile | Description$ If a card would be put into your graveyard from anywhere, exile that card instead.
SVar:CryptExile:AB$ ChangeZone | Cost$ 0 | Hidden$ True | Origin$ All | Destination$ Exile | Defined$ ReplacedCard SVar:CryptExile:AB$ ChangeZone | Cost$ 0 | Hidden$ True | Origin$ All | Destination$ Exile | Defined$ ReplacedCard
SVar:RemAIDeck:True SVar:RemAIDeck:True
SVar:RemRandomDeck:True SVar:RemRandomDeck:True

View File

@@ -3,7 +3,7 @@ ManaCost:GW GW
Types:Enchantment Aura Types:Enchantment Aura
K:Enchant player K:Enchant player
A:SP$ Attach | Cost$ GW GW | ValidTgts$ Player A:SP$ Attach | Cost$ GW GW | ValidTgts$ Player
R:Event$ Moved | ActiveZones$ Battlefield | Destination$ Graveyard | ValidCard$ Card.OwnedBy Player.EnchantedBy | ReplaceWith$ Reveal | Description$ If a card would be put into enchanted player's graveyard from anywhere, instead that card is revealed and put on the bottom of that player's library. R:Event$ Moved | ActiveZones$ Battlefield | Destination$ Graveyard | ValidCard$ Card.nonToken+OwnedBy Player.EnchantedBy | ReplaceWith$ Reveal | Description$ If a card would be put into enchanted player's graveyard from anywhere, instead that card is revealed and put on the bottom of that player's library.
SVar:Reveal:AB$ ChangeZone | Cost$ 0 | Hidden$ True | Origin$ All | Destination$ Library | Defined$ ReplacedCard | LibraryPosition$ -1 | Reveal$ True SVar:Reveal:AB$ ChangeZone | Cost$ 0 | Hidden$ True | Origin$ All | Destination$ Library | Defined$ ReplacedCard | LibraryPosition$ -1 | Reveal$ True
SVar:RemRandomDeck:True SVar:RemRandomDeck:True
SVar:Picture:http://www.wizards.com/global/images/magic/general/wheel_of_sun_and_moon.jpg SVar:Picture:http://www.wizards.com/global/images/magic/general/wheel_of_sun_and_moon.jpg

View File

@@ -4,7 +4,7 @@ Types:Enchantment
S:Mode$ CantBeCast | ValidCard$ Card | Caster$ You | CheckSVar$ X | Description$ You can't cast more than one spell each turn. S:Mode$ CantBeCast | ValidCard$ Card | Caster$ You | CheckSVar$ X | Description$ You can't cast more than one spell each turn.
SVar:X:Count$ThisTurnCast_Card.YouOwn SVar:X:Count$ThisTurnCast_Card.YouOwn
S:Mode$ Continuous | Affected$ Card.YouCtrl | AffectedZone$ Graveyard | AddHiddenKeyword$ May be played | Description$ You may play cards from your graveyard. S:Mode$ Continuous | Affected$ Card.YouCtrl | AffectedZone$ Graveyard | AddHiddenKeyword$ May be played | Description$ You may play cards from your graveyard.
R:Event$ Moved | ActiveZones$ Battlefield | Destination$ Graveyard | ValidCard$ Card.YouOwn | ReplaceWith$ Exile | Description$ If a card would be put into your graveyard from anywhere, exile it instead. R:Event$ Moved | ActiveZones$ Battlefield | Destination$ Graveyard | ValidCard$ Card.nonToken+YouOwn | ReplaceWith$ Exile | Description$ If a card would be put into your graveyard from anywhere, exile it instead.
SVar:Exile:AB$ ChangeZone | Cost$ 0 | Hidden$ True | Origin$ All | Destination$ Exile | Defined$ ReplacedCard SVar:Exile:AB$ ChangeZone | Cost$ 0 | Hidden$ True | Origin$ All | Destination$ Exile | Defined$ ReplacedCard
SVar:RemRandomDeck:True SVar:RemRandomDeck:True
SVar:Picture:http://www.wizards.com/global/images/magic/general/yawgmoths_agenda.jpg SVar:Picture:http://www.wizards.com/global/images/magic/general/yawgmoths_agenda.jpg

View File

@@ -386,15 +386,11 @@ public class SpellPermanent extends Spell {
return super.canPlayAI(); return super.canPlayAI();
} }
public static boolean checkETBEffects(final Card card, final SpellAbility sa, final ApiType api) {
return checkETBEffects(card, sa, api, null);
}
public static boolean checkETBEffects(final Card card, final AIPlayer ai) { public static boolean checkETBEffects(final Card card, final AIPlayer ai) {
return checkETBEffects(card, null, null, ai); return checkETBEffects(card, null, null, ai);
} }
private static boolean checkETBEffects(final Card card, final SpellAbility sa, final ApiType api, final AIPlayer ai) { public static boolean checkETBEffects(final Card card, final SpellAbility sa, final ApiType api, final AIPlayer ai) {
boolean rightapi = false; boolean rightapi = false;
if (card.isCreature() if (card.isCreature()

View File

@@ -144,11 +144,8 @@ public class AiController {
for (final Card c : all) { for (final Card c : all) {
for (final SpellAbility sa : c.getNonManaSpellAbilities()) { for (final SpellAbility sa : c.getNonManaSpellAbilities()) {
if (sa instanceof SpellPermanent) { if (sa instanceof SpellPermanent) {
// TODO ArsenalNut (13 Oct 2012) added line to set activating player to fix NPE problem
// in checkETBEffects. There is SpellPermanent.checkETBEffects where the player can be
// directly input but it is currently a private method.
sa.setActivatingPlayer(player); sa.setActivatingPlayer(player);
if (SpellPermanent.checkETBEffects(c, sa, ApiType.Counter)) { if (SpellPermanent.checkETBEffects(c, sa, ApiType.Counter, player)) {
spellAbilities.add(sa); spellAbilities.add(sa);
} }
} }