mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-16 18:58:00 +00:00
merged r15946-r15965 from the Trunk into CloneFix branch
This commit is contained in:
1
.gitattributes
vendored
1
.gitattributes
vendored
@@ -1121,6 +1121,7 @@ res/cardsfolder/b/brass_talon_chimera.txt svneol=native#text/plain
|
||||
res/cardsfolder/b/brassclaw_orcs.txt svneol=native#text/plain
|
||||
res/cardsfolder/b/bravado.txt svneol=native#text/plain
|
||||
res/cardsfolder/b/brave_the_elements.txt svneol=native#text/plain
|
||||
res/cardsfolder/b/brawl.txt -text
|
||||
res/cardsfolder/b/brawn.txt svneol=native#text/plain
|
||||
res/cardsfolder/b/breach.txt svneol=native#text/plain
|
||||
res/cardsfolder/b/break_asunder.txt svneol=native#text/plain
|
||||
|
||||
42
CHANGES.txt
42
CHANGES.txt
@@ -97,6 +97,25 @@ Fixes/Features:
|
||||
- CheckStyle.
|
||||
- CheckStyle.
|
||||
- Added the recent commit logs to changes.txt. Preparing for the snapshot build release.
|
||||
- Fixed continuous static abilities.
|
||||
- merged r15910-r15940 from the Trunk into CloneFix branch
|
||||
- CheckStyle.
|
||||
- Abilitystealers besides Havengul Lich had the wrong "Affected" parameter.
|
||||
- merged r15940-r15946 from the Trunk into CloneFix branch
|
||||
- Added the recent commit logs to changes.txt. Preparing for the snapshot build release.
|
||||
- Commented out one redundant version of copySpellontoStack.
|
||||
- Fixed pumpMandatoryTarget not checking shroud, etc.
|
||||
- Updated all-prices.txt.
|
||||
- Added the recent commit logs to changes.txt. Preparing for the snapshot build release.
|
||||
- Prevented some SpellCast triggers from crashing when Fireball (and similar hardcoded cards) is cast (they still won't trigger correctly because of missing info).
|
||||
- Fixed The Abyss and similar cards.
|
||||
- Fixed Targeting for Sudden Disappearance.
|
||||
- Fixed Heartwood Storyteller.
|
||||
- Added the recent commit logs to changes.txt. Preparing for the snapshot build release.
|
||||
- CheckStyle.
|
||||
- Fixed stolen Doubling Cube ability only doubling white mana.
|
||||
- Fixed Doubling Cube not doubling colorless mana.
|
||||
- Added the recent commit logs to changes.txt. Preparing for the snapshot build release.
|
||||
|
||||
|
||||
Many people helped with this version. A special thank you goes out to them. (Attempted to list names alphabetically):
|
||||
@@ -106,19 +125,31 @@ Many people helped with this version. A special thank you goes out to them. (Att
|
||||
|
||||
Added cards to the M13 branch and these are not yet available in the snapshot builds:
|
||||
|
||||
Archaeomancer
|
||||
Captain's Call
|
||||
Murder
|
||||
Warclamp Mastiff
|
||||
Ajani's Sunstriker
|
||||
Archaeomancer
|
||||
Attended Knight
|
||||
Bond Beetle
|
||||
Captain's Call
|
||||
Cathedral of War
|
||||
Cower in Fear
|
||||
Crippling Blight
|
||||
Crusader of Odric
|
||||
Duskmantle Prowler
|
||||
Duty-Bound Dead
|
||||
Faerie Invaders
|
||||
Guardian Lions
|
||||
Harbor Bandit
|
||||
Hydrosurge
|
||||
Knight of Glory
|
||||
Liliana of the Dark Realms
|
||||
Mind Sculpt
|
||||
Murder
|
||||
Rhox Faithmender
|
||||
Sublime Archangel
|
||||
Talrand's Invocation
|
||||
Tricks of the Trade
|
||||
Warclamp Mastiff
|
||||
Watercourser
|
||||
|
||||
|
||||
Added many cards, including:
|
||||
@@ -128,6 +159,9 @@ Experiment Kraj
|
||||
Myr Welder
|
||||
Necrotic Ooze
|
||||
Havengul Lich
|
||||
Bulwark
|
||||
Cabal Interrogator
|
||||
Brawl
|
||||
|
||||
|
||||
end
|
||||
|
||||
13
res/cardsfolder/b/brawl.txt
Normal file
13
res/cardsfolder/b/brawl.txt
Normal file
@@ -0,0 +1,13 @@
|
||||
Name:Brawl
|
||||
ManaCost:3 R R
|
||||
Types:Instant
|
||||
Text:no text
|
||||
A:SP$ AnimateAll | Cost$ 3 R R | ValidCards$ Creature | Abilities$ ThrowPunch | sVars$ BrawlX | SpellDescription$ Until end of turn, all creatures gain "T: This creature deals damage equal to its power to target creature."
|
||||
SVar:ThrowPunch:AB$ DealDamage | Cost$ T | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumDmg$ BrawlX | References$ BrawlX | SpellDescription$ This creature deals damage equal to its power to target creature.
|
||||
SVar:BrawlX:Count$CardPower
|
||||
SVar:RemAIDeck:True
|
||||
SVar:Rarity:Rare
|
||||
SVar:Picture:http://www.wizards.com/global/images/magic/general/brawl.jpg
|
||||
SetInfo:MMQ|Rare|http://magiccards.info/scans/en/mm/178.jpg
|
||||
Oracle:Until end of turn, all creatures gain "{T}: This creature deals damage equal to its power to target creature."
|
||||
End
|
||||
@@ -6,12 +6,14 @@ A:AB$ Mana | Cost$ 3 T | Produced$ W | Amount$ A | SubAbility$ ManaBlue | Refere
|
||||
SVar:ManaBlue:DB$Mana | Produced$ U | Amount$ B | SubAbility$ ManaBlack | References$ B
|
||||
SVar:ManaBlack:DB$Mana | Produced$ B | Amount$ C | SubAbility$ ManaRed | References$ C
|
||||
SVar:ManaRed:DB$Mana | Produced$ R | Amount$ D | SubAbility$ ManaGreen | References$ D
|
||||
SVar:ManaGreen:DB$Mana | Produced$ G | Amount$ E | References$ E
|
||||
SVar:ManaGreen:DB$Mana | Produced$ G | Amount$ E | SubAbility$ ManaColorless | References$ E
|
||||
SVar:ManaColorless:DB$Mana | Produced$ 1 | Amount$ F | References$ F
|
||||
SVar:A:Count$ManaPool:white
|
||||
SVar:B:Count$ManaPool:blue
|
||||
SVar:C:Count$ManaPool:black
|
||||
SVar:D:Count$ManaPool:red
|
||||
SVar:E:Count$ManaPool:green
|
||||
SVar:F:Count$ManaPool:colorless
|
||||
#AI doesn't have a mana pool
|
||||
SVar:RemAIDeck:True
|
||||
SVar:Rarity:Rare
|
||||
|
||||
@@ -3,8 +3,8 @@ ManaCost:1 G G
|
||||
Types:Creature Treefolk
|
||||
Text:no text
|
||||
PT:2/3
|
||||
T:Mode$ SpellCast | TriggerZones$ Battlefield | ValidCard$ Spell.nonCreature | ValidActivatingPlayer$ Opponent | Execute$ TrigDrawYou | OptionalDecider$ You |TriggerDescription$ Whenever a player casts a noncreature spell, each of that player's opponents may draw a card.
|
||||
T:Mode$ SpellCast | TriggerZones$ Battlefield | ValidCard$ Spell.nonCreature | ValidActivatingPlayer$ You | Execute$ TrigDrawOpp | OptionalDecider$ Opponent |TriggerDescription$ Whenever a player casts a noncreature spell, each of that player's opponents may draw a card. | Secondary$ True
|
||||
T:Mode$ SpellCast | TriggerZones$ Battlefield | ValidCard$ Card.nonCreature | ValidActivatingPlayer$ Opponent | Execute$ TrigDrawYou | OptionalDecider$ You |TriggerDescription$ Whenever a player casts a noncreature spell, each of that player's opponents may draw a card.
|
||||
T:Mode$ SpellCast | TriggerZones$ Battlefield | ValidCard$ Card.nonCreature | ValidActivatingPlayer$ You | Execute$ TrigDrawOpp | OptionalDecider$ Opponent |TriggerDescription$ Whenever a player casts a noncreature spell, each of that player's opponents may draw a card. | Secondary$ True
|
||||
SVar:TrigDrawYou:AB$ Draw | Cost$ 0 | Defined$ You | NumCards$ 1
|
||||
SVar:TrigDrawOpp:AB$ Draw | Cost$ 0 | Defined$ Opponent | NumCards$ 1
|
||||
SVar:Rarity:Rare
|
||||
|
||||
@@ -5,7 +5,7 @@ Text:no text
|
||||
A:SP$ ChangeZoneAll | Cost$ 5 W | Origin$ Battlefield | Destination$ Exile | ValidTgts$ Player | TgtPrompt$ Select target player | ChangeType$ Permanent.nonLand | RememberChanged$ True | ForgetOtherRemembered$ True | SubAbility$ DelTrig | IsCurse$ True | SpellDescription$ Exile all nonland permanents target player controls. Return the exiled cards to the battlefield under their owners control at the beginning of the next end step.
|
||||
SVar:DelTrig:DB$DelayedTrigger | Mode$ Phase | Phase$ End of Turn | Execute$ TrigReturn | TriggerDescription$ Return exiled permanents to the battlefield.
|
||||
SVar:TrigReturn:DB$ChangeZoneAll | Origin$ Exile | Destination$ Battlefield | ChangeType$ Card.IsRemembered
|
||||
SVar:PlayMain1:TRUE
|
||||
SVar:RemAIDeck:True
|
||||
SVar:Rarity:Rare
|
||||
SVar:Picture:http://www.wizards.com/global/images/magic/general/sudden_disappearance.jpg
|
||||
SetInfo:DKA|Rare|http://magiccards.info/scans/en/dka/23.jpg
|
||||
|
||||
@@ -1,10 +1,16 @@
|
||||
Name:Yawgmoth Demon
|
||||
ManaCost:4 B B
|
||||
Types:Creature Demon
|
||||
Text:At the beginning of your upkeep, you may sacrifice an artifact. If you don't, tap Yawgmoth Demon and it deals 2 damage to you.
|
||||
Text:no text
|
||||
PT:6/6
|
||||
K:Flying
|
||||
K:First Strike
|
||||
T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | Execute$ TrigElderSpawnSacrifice | TriggerZones$ Battlefield | TriggerDescription$ At the beginning of your upkeep, you may sacrifice an artifact. If you don't, tap CARDNAME and it deals 2 damage to you.
|
||||
SVar:TrigElderSpawnSacrifice:AB$ Sacrifice | Cost$ 0 | SacValid$ Artifact | Optional$ True | RememberSacrificed$ True | SubAbility$ DBElderSpawnSacrificeMe
|
||||
SVar:DBElderSpawnSacrificeMe:DB$ Tap | Defined$ Self | ConditionDefined$ Remembered | ConditionPresent$ Artifact | ConditionCompare$ EQ0 | SubAbility$ DBElderSpawnDamage
|
||||
SVar:DBElderSpawnDamage:DB$ DealDamage | Defined$ You | NumDmg$ 2 | ConditionDefined$ Remembered | ConditionPresent$ Artifact | ConditionCompare$ EQ0 | SubAbility$ DBElderSpawnCleanup
|
||||
SVar:DBElderSpawnCleanup:DB$ Cleanup | ClearRemembered$ True
|
||||
SVar:RemAIDeck:True
|
||||
SVar:RemRandomDeck:True
|
||||
SVar:Rarity:Rare
|
||||
SVar:Picture:http://www.wizards.com/global/images/magic/general/yawgmoth_demon.jpg
|
||||
|
||||
21796
res/quest/all-prices.txt
21796
res/quest/all-prices.txt
File diff suppressed because it is too large
Load Diff
@@ -2383,11 +2383,11 @@ public final class AbilityFactoryChangeZone {
|
||||
humanType = AbilityFactory.filterListByType(humanType, params.get("ChangeType"), sa);
|
||||
CardList computerType = AllZone.getComputerPlayer().getCardsIn(origin);
|
||||
computerType = AbilityFactory.filterListByType(computerType, params.get("ChangeType"), sa);
|
||||
final Target tgt = sa.getTarget();
|
||||
|
||||
// TODO improve restrictions on when the AI would want to use this
|
||||
// spBounceAll has some AI we can compare to.
|
||||
if (origin.equals(ZoneType.Hand) || origin.equals(ZoneType.Library)) {
|
||||
final Target tgt = sa.getTarget();
|
||||
if (tgt != null) {
|
||||
if (AllZone.getHumanPlayer().getCardsIn(ZoneType.Hand).isEmpty()
|
||||
|| !AllZone.getHumanPlayer().canBeTargetedBy(sa)) {
|
||||
@@ -2403,6 +2403,15 @@ public final class AbilityFactoryChangeZone {
|
||||
// occur
|
||||
// if only creatures are affected evaluate both lists and pass only
|
||||
// if human creatures are more valuable
|
||||
if (tgt != null) {
|
||||
if (AllZone.getHumanPlayer().getCardsIn(ZoneType.Hand).isEmpty()
|
||||
|| !AllZone.getHumanPlayer().canBeTargetedBy(sa)) {
|
||||
return false;
|
||||
}
|
||||
tgt.resetTargets();
|
||||
tgt.addTarget(AllZone.getHumanPlayer());
|
||||
computerType.clear();
|
||||
}
|
||||
if ((humanType.getNotType("Creature").size() == 0) && (computerType.getNotType("Creature").size() == 0)) {
|
||||
if ((CardFactoryUtil.evaluateCreatureList(computerType) + 200) >= CardFactoryUtil
|
||||
.evaluateCreatureList(humanType)) {
|
||||
@@ -2420,7 +2429,6 @@ public final class AbilityFactoryChangeZone {
|
||||
return false;
|
||||
}
|
||||
} else if (origin.equals(ZoneType.Graveyard)) {
|
||||
final Target tgt = sa.getTarget();
|
||||
if (tgt != null) {
|
||||
if (AllZone.getHumanPlayer().getCardsIn(ZoneType.Graveyard).isEmpty()
|
||||
|| !AllZone.getHumanPlayer().canBeTargetedBy(sa)) {
|
||||
|
||||
@@ -67,9 +67,13 @@ public class AbilityFactoryMana {
|
||||
*/
|
||||
public static SpellAbility createAbilityMana(final AbilityFactory abilityFactory, final String produced) {
|
||||
final String restrictions = abilityFactory.getMapParams().get("RestrictValid");
|
||||
final AbilityMana abMana = new AbilityMana(abilityFactory.getHostCard(), abilityFactory.getAbCost(), produced, restrictions) {
|
||||
class abFactoryMana extends AbilityMana {
|
||||
private static final long serialVersionUID = -1933592438783630254L;
|
||||
|
||||
public abFactoryMana(Card ca,Cost co, String s, String s2) {
|
||||
super(ca,co,s,s2);
|
||||
}
|
||||
|
||||
private final AbilityFactory af = abilityFactory;
|
||||
|
||||
@Override
|
||||
@@ -92,7 +96,15 @@ public class AbilityFactoryMana {
|
||||
public String getManaProduced() {
|
||||
return manaGenerated(this, this.af, this);
|
||||
}
|
||||
};
|
||||
|
||||
@Override
|
||||
public AbilityActivated getCopy() {
|
||||
AbilityActivated res = new abFactoryMana(getSourceCard(), getPayCosts(), this.getOrigProduced(), getManaRestrictions());
|
||||
CardFactoryUtil.copySpellAbility(this, res);
|
||||
return res;
|
||||
}
|
||||
}
|
||||
final AbilityMana abMana = new abFactoryMana(abilityFactory.getHostCard(), abilityFactory.getAbCost(), produced, restrictions);
|
||||
return abMana;
|
||||
}
|
||||
|
||||
@@ -172,6 +184,7 @@ public class AbilityFactoryMana {
|
||||
AbilitySub res = new DrawbackMana(getSourceCard(),
|
||||
getTarget() == null ? null : new Target(getTarget()));
|
||||
CardFactoryUtil.copySpellAbility(this, res);
|
||||
((DrawbackMana)res).setTmp((AbilityMana)tmpMana.getCopy());
|
||||
return res;
|
||||
}
|
||||
|
||||
@@ -180,7 +193,7 @@ public class AbilityFactoryMana {
|
||||
private final AbilityFactory af = abilityFactory;
|
||||
// To get the mana to resolve properly, we need the spell to contain an AbilityMana
|
||||
private final Cost tmp = new Cost(abilityFactory.getHostCard(), "0", false);
|
||||
private final AbilityMana tmpMana = new AbilityMana(abilityFactory.getHostCard(), this.tmp, produced, restrictions) {
|
||||
private AbilityMana tmpMana = new AbilityMana(abilityFactory.getHostCard(), this.tmp, produced, restrictions) {
|
||||
private static final long serialVersionUID = 1454043766057140491L;
|
||||
|
||||
@Override
|
||||
@@ -191,6 +204,10 @@ public class AbilityFactoryMana {
|
||||
|
||||
};
|
||||
|
||||
public void setTmp(AbilityMana newTmp) {
|
||||
tmpMana = newTmp;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getStackDescription() {
|
||||
// when getStackDesc is called, just build exactly what is
|
||||
@@ -477,9 +494,13 @@ public class AbilityFactoryMana {
|
||||
* @return a {@link forge.card.spellability.SpellAbility} object.
|
||||
*/
|
||||
public static SpellAbility createAbilityManaReflected(final AbilityFactory abilityFactory, final String produced) {
|
||||
final AbilityMana abMana = new AbilityMana(abilityFactory.getHostCard(), abilityFactory.getAbCost(), produced) {
|
||||
class abFactoryReflectedMana extends AbilityMana {
|
||||
private static final long serialVersionUID = -1933592438783630254L;
|
||||
|
||||
public abFactoryReflectedMana(Card ca,Cost co,String s) {
|
||||
super(ca,co,s);
|
||||
}
|
||||
|
||||
private final AbilityFactory af = abilityFactory;
|
||||
|
||||
@Override
|
||||
@@ -498,7 +519,15 @@ public class AbilityFactoryMana {
|
||||
return false;
|
||||
}
|
||||
|
||||
};
|
||||
@Override
|
||||
public AbilityActivated getCopy() {
|
||||
AbilityActivated res = new abFactoryReflectedMana(getSourceCard(), getPayCosts(), getManaProduced() );
|
||||
CardFactoryUtil.copySpellAbility(this, res);
|
||||
((AbilityMana)res).setReflectedMana(true);
|
||||
return res;
|
||||
}
|
||||
}
|
||||
final AbilityMana abMana = new abFactoryReflectedMana(abilityFactory.getHostCard(), abilityFactory.getAbCost(), produced);
|
||||
abMana.setReflectedMana(true);
|
||||
return abMana;
|
||||
}
|
||||
|
||||
@@ -888,6 +888,7 @@ public class AbilityFactoryPump {
|
||||
CardList list = AllZoneUtil.getCardsIn(ZoneType.Battlefield);
|
||||
final Target tgt = sa.getTarget();
|
||||
list = list.getValidCards(tgt.getValidTgts(), sa.getActivatingPlayer(), sa.getSourceCard());
|
||||
list = list.getTargetableCards(sa);
|
||||
|
||||
if (list.size() < tgt.getMinTargets(sa.getSourceCard(), sa)) {
|
||||
tgt.resetTargets();
|
||||
|
||||
@@ -282,7 +282,7 @@ public abstract class AbstractCardFactory implements CardFactoryInterface {
|
||||
* @param bCopyDetails
|
||||
* a boolean.
|
||||
*/
|
||||
@Override
|
||||
/*@Override
|
||||
public final void copySpellontoStack(final Card source, final Card original, final boolean bCopyDetails) {
|
||||
final SpellAbility[] sas = original.getSpellAbility();
|
||||
SpellAbility sa = null;
|
||||
@@ -360,7 +360,7 @@ public abstract class AbstractCardFactory implements CardFactoryInterface {
|
||||
} else if (copySA.canPlayAI()) {
|
||||
ComputerUtil.playStackFree(copySA);
|
||||
}
|
||||
}
|
||||
}*/
|
||||
|
||||
/**
|
||||
* <p>
|
||||
|
||||
@@ -87,7 +87,7 @@ public interface CardFactoryInterface extends Iterable<Card> {
|
||||
* @param bCopyDetails
|
||||
* a boolean.
|
||||
*/
|
||||
void copySpellontoStack(Card source, Card original, boolean bCopyDetails);
|
||||
//void copySpellontoStack(Card source, Card original, boolean bCopyDetails);
|
||||
|
||||
/**
|
||||
* <p>
|
||||
|
||||
@@ -927,7 +927,7 @@ public class CardFactorySorceries {
|
||||
this.printCardTargets();
|
||||
Log.debug("Fireball", "Fireball - player targets: ");
|
||||
this.printPlayerTargets();
|
||||
if (card.getController().isComputer()) {
|
||||
if (this.getActivatingPlayer().isComputer()) {
|
||||
final StringBuilder sb = new StringBuilder();
|
||||
sb.append(cardName).append(" - Computer causes ");
|
||||
sb.append(damage).append(" to:\n\n");
|
||||
|
||||
@@ -153,7 +153,7 @@ public class AbilityMana extends AbilityActivated implements java.io.Serializabl
|
||||
public AbilityMana(final Card sourceCard, final Cost cost, final String produced, final int num, final String restrictions) {
|
||||
super(sourceCard, cost, null);
|
||||
|
||||
this.origProduced = produced;
|
||||
origProduced = produced;
|
||||
this.amount = num;
|
||||
if (restrictions != null) {
|
||||
this.manaRestrictions = restrictions;
|
||||
@@ -258,7 +258,7 @@ public class AbilityMana extends AbilityActivated implements java.io.Serializabl
|
||||
else {
|
||||
try {
|
||||
// if baseMana is an integer(colorless), just multiply amount and baseMana
|
||||
int base = Integer.parseInt(this.origProduced);
|
||||
int base = Integer.parseInt(this.getOrigProduced());
|
||||
sb.append(base * this.amount);
|
||||
} catch (NumberFormatException e) {
|
||||
for (int i = 0; i < this.amount; i++) {
|
||||
@@ -356,13 +356,13 @@ public class AbilityMana extends AbilityActivated implements java.io.Serializabl
|
||||
* @return a {@link java.lang.String} object.
|
||||
*/
|
||||
public final String mana() {
|
||||
if (this.origProduced.contains("Chosen")) {
|
||||
if (this.getOrigProduced().contains("Chosen")) {
|
||||
if (this.getSourceCard() != null && !this.getSourceCard().getChosenColor().isEmpty()) {
|
||||
return InputPayManaCostUtil.getShortColorString(this.getSourceCard()
|
||||
.getChosenColor().get(0));
|
||||
}
|
||||
}
|
||||
return this.origProduced;
|
||||
return this.getOrigProduced();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -374,7 +374,7 @@ public class AbilityMana extends AbilityActivated implements java.io.Serializabl
|
||||
* a {@link java.lang.String} object.
|
||||
*/
|
||||
public final void setMana(final String s) {
|
||||
this.origProduced = s;
|
||||
origProduced = s;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -473,7 +473,7 @@ public class AbilityMana extends AbilityActivated implements java.io.Serializabl
|
||||
* @return a boolean.
|
||||
*/
|
||||
public boolean isAnyMana() {
|
||||
return this.origProduced.contains("Any");
|
||||
return this.getOrigProduced().contains("Any");
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -490,14 +490,14 @@ public class AbilityMana extends AbilityActivated implements java.io.Serializabl
|
||||
return true;
|
||||
}
|
||||
|
||||
if (this.origProduced.contains("Chosen")) {
|
||||
if (this.getOrigProduced().contains("Chosen")) {
|
||||
if (this.getSourceCard() != null && !this.getSourceCard().getChosenColor().isEmpty()
|
||||
&& InputPayManaCostUtil.getShortColorString(this.getSourceCard().getChosenColor().get(0))
|
||||
.contains(s)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return this.origProduced.contains(s);
|
||||
return this.getOrigProduced().contains(s);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -508,8 +508,8 @@ public class AbilityMana extends AbilityActivated implements java.io.Serializabl
|
||||
* @return a boolean.
|
||||
*/
|
||||
public final boolean isBasic() {
|
||||
if (this.origProduced.length() != 1 && !this.origProduced.contains("Any")
|
||||
&& !this.origProduced.contains("Chosen")) {
|
||||
if (this.getOrigProduced().length() != 1 && !this.getOrigProduced().contains("Any")
|
||||
&& !this.getOrigProduced().contains("Chosen")) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -600,5 +600,12 @@ public class AbilityMana extends AbilityActivated implements java.io.Serializabl
|
||||
return (41 * (41 + this.getType().hashCode()));
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the origProduced
|
||||
*/
|
||||
public String getOrigProduced() {
|
||||
return origProduced;
|
||||
}
|
||||
|
||||
} // end class AbilityMana
|
||||
|
||||
|
||||
@@ -1636,9 +1636,14 @@ public abstract class SpellAbility {
|
||||
* @return a boolean.
|
||||
*/
|
||||
public final boolean canTarget(final GameEntity entity) {
|
||||
if (this.getTarget() == null) {
|
||||
if (entity.canBeTargetedBy(this)) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
if (entity.isValid(this.getTarget().getValidTgts(), this.getActivatingPlayer(), this.getSourceCard())
|
||||
&& (this.getTarget() == null || !this.getTarget().isUniqueTargets()
|
||||
|| !TargetSelection.getUniqueTargets(this).contains(entity))
|
||||
&& (!this.getTarget().isUniqueTargets() || !TargetSelection.getUniqueTargets(this).contains(entity))
|
||||
&& entity.canBeTargetedBy(this)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -288,7 +288,7 @@ public class TriggerHandler {
|
||||
// This is done to allow the list of triggers to be modified while
|
||||
// triggers are running.
|
||||
final ArrayList<Trigger> delayedTriggersWorkingCopy = new ArrayList<Trigger>(this.delayedTriggers);
|
||||
CardList allCards = AllZoneUtil.getCardsIn(ZoneType.StaticAbilitiesSourceZones);
|
||||
CardList allCards = AllZoneUtil.getCardsIn(ZoneType.STATIC_ABILITIES_SOURCE_ZONES);
|
||||
boolean checkStatics = false;
|
||||
|
||||
// Static triggers
|
||||
@@ -305,7 +305,7 @@ public class TriggerHandler {
|
||||
}
|
||||
|
||||
// AP
|
||||
allCards = playerAP.getCardsIn(ZoneType.StaticAbilitiesSourceZones);
|
||||
allCards = playerAP.getCardsIn(ZoneType.STATIC_ABILITIES_SOURCE_ZONES);
|
||||
allCards.addAll(AllZoneUtil.getCardsIn(ZoneType.Stack).getController(playerAP));
|
||||
if (runParams.containsKey("Destination") && runParams.containsKey("Card")) {
|
||||
String type = (String) runParams.get("Destination");
|
||||
@@ -330,7 +330,7 @@ public class TriggerHandler {
|
||||
}
|
||||
|
||||
// NAP
|
||||
allCards = playerAP.getOpponent().getCardsIn(ZoneType.StaticAbilitiesSourceZones);
|
||||
allCards = playerAP.getOpponent().getCardsIn(ZoneType.STATIC_ABILITIES_SOURCE_ZONES);
|
||||
allCards.addAll(AllZoneUtil.getCardsIn(ZoneType.Stack).getController(playerAP.getOpponent()));
|
||||
for (final Card c : allCards) {
|
||||
for (final Trigger t : c.getTriggers()) {
|
||||
|
||||
@@ -86,7 +86,7 @@ public class TriggerSpellAbilityCast extends Trigger {
|
||||
}
|
||||
|
||||
if (this.getMapParams().containsKey("ValidActivatingPlayer")) {
|
||||
if (!matchesValid(si.getActivatingPlayer(), this.getMapParams().get("ValidActivatingPlayer")
|
||||
if (si == null || !matchesValid(si.getActivatingPlayer(), this.getMapParams().get("ValidActivatingPlayer")
|
||||
.split(","), this.getHostCard())) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -80,7 +80,7 @@ public class Upkeep extends Phase implements java.io.Serializable {
|
||||
Upkeep.upkeepEcho();
|
||||
|
||||
Upkeep.upkeepTheAbyss();
|
||||
Upkeep.upkeepYawgmothDemon();
|
||||
//Upkeep.upkeepYawgmothDemon();
|
||||
Upkeep.upkeepDropOfHoney();
|
||||
Upkeep.upkeepDemonicHordes();
|
||||
Upkeep.upkeepTangleWire();
|
||||
@@ -533,8 +533,7 @@ public class Upkeep extends Phase implements java.io.Serializable {
|
||||
final StringBuilder sb = new StringBuilder();
|
||||
sb.append(abyss.getName()).append(" - destroy a nonartifact creature of your choice.");
|
||||
sacrificeCreature.setStackDescription(sb.toString());
|
||||
AllZone.getStack().addSimultaneousStackEntry(sacrificeCreature);
|
||||
|
||||
AllZone.getStack().addAndUnfreeze(sacrificeCreature);
|
||||
} // end for
|
||||
} // The Abyss
|
||||
|
||||
@@ -543,12 +542,12 @@ public class Upkeep extends Phase implements java.io.Serializable {
|
||||
* upkeepYawgmothDemon.
|
||||
* </p>
|
||||
*/
|
||||
private static void upkeepYawgmothDemon() {
|
||||
/*private static void upkeepYawgmothDemon() {
|
||||
/*
|
||||
* At the beginning of your upkeep, you may sacrifice an artifact. If
|
||||
* you don't, tap Yawgmoth Demon and it deals 2 damage to you.
|
||||
*/
|
||||
final Player player = Singletons.getModel().getGameState().getPhaseHandler().getPlayerTurn();
|
||||
/*final Player player = Singletons.getModel().getGameState().getPhaseHandler().getPlayerTurn();
|
||||
final CardList cards = player.getCardsIn(ZoneType.Battlefield, "Yawgmoth Demon");
|
||||
|
||||
for (int i = 0; i < cards.size(); i++) {
|
||||
@@ -611,7 +610,7 @@ public class Upkeep extends Phase implements java.io.Serializable {
|
||||
AllZone.getStack().addSimultaneousStackEntry(sacrificeArtifact);
|
||||
|
||||
} // end for
|
||||
}
|
||||
}*/
|
||||
|
||||
/**
|
||||
* <p>
|
||||
|
||||
@@ -665,7 +665,7 @@ public class MagicStack extends MyObservable {
|
||||
@Override
|
||||
public void execute() {
|
||||
for (int i = 0; i < sp.getSourceCard().getReplicateMagnitude(); i++) {
|
||||
AllZone.getCardFactory().copySpellontoStack(sp.getSourceCard(), sp.getSourceCard(), false);
|
||||
AllZone.getCardFactory().copySpellontoStack(sp.getSourceCard(), sp.getSourceCard(), sp, false);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
@@ -33,7 +33,7 @@ public enum ZoneType {
|
||||
/** Ante. */
|
||||
Ante(false);
|
||||
|
||||
public static final ZoneType[] StaticAbilitiesSourceZones = new ZoneType[]{Battlefield, Graveyard, Exile/*, Hand*/};
|
||||
public static final ZoneType[] STATIC_ABILITIES_SOURCE_ZONES = new ZoneType[]{Battlefield, Graveyard, Exile/*, Hand*/};
|
||||
|
||||
private final boolean holdsHiddenInfo;
|
||||
private ZoneType(boolean holdsHidden) {
|
||||
|
||||
Reference in New Issue
Block a user