Merge pull request #959 from kevlahnota/master

Hide action stack & Sorted Filter
This commit is contained in:
Anthony Calosa
2017-03-11 10:48:17 +08:00
committed by GitHub
7 changed files with 72 additions and 35 deletions
+39 -2
View File
@@ -20917,6 +20917,15 @@ power=0
toughness=1 toughness=1
[/card] [/card]
[card] [card]
name=Cloudform
auto=withenchant manifest all(*[zpos=1]|mylibrary)
auto=teach(creature) flying
auto=teach(creature) opponentshroud
text=When Cloudform enters the battlefield, it becomes an Aura with enchant creature. Manifest the top card of your library and attach Cloudform to it. (To manifest a card, put it onto the battlefield face down as a 2/2 creature. Turn it face up any time for its mana cost if it's a creature card.) -- Enchanted creature has flying and hexproof.
mana={1}{U}{U}
type=Enchantment
[/card]
[card]
name=Cloudgoat Ranger name=Cloudgoat Ranger
auto=token(Kithkin Soldier,Creature Kithkin Soldier,1/1,white)*3 auto=token(Kithkin Soldier,Creature Kithkin Soldier,1/1,white)*3
auto={T(kithkin|myBattlefield)}{T(kithkin|myBattlefield)}{T(kithkin|myBattlefield)}:2/0 && flying auto={T(kithkin|myBattlefield)}{T(kithkin|myBattlefield)}{T(kithkin|myBattlefield)}:2/0 && flying
@@ -34328,7 +34337,7 @@ toughness=3
name=Eldrazi Horror name=Eldrazi Horror
power=3 power=3
toughness=2 toughness=2
type=creature eldrazi horror type=Creature Eldrazi Horror
color=colorless color=colorless
[/card] [/card]
[card] [card]
@@ -38429,7 +38438,7 @@ toughness=3
[card] [card]
name=Faerie Macabre name=Faerie Macabre
abilities=flying abilities=flying
autohand={S}:target(other *<upto:2>|graveyard) moveTo(exile) autohand={discard}:target(<upto:2>other *|graveyard) moveTo(exile)
text=Flying -- Discard Faerie Macabre: Exile up to two target cards from graveyards. text=Flying -- Discard Faerie Macabre: Exile up to two target cards from graveyards.
mana={1}{B}{B} mana={1}{B}{B}
type=Creature type=Creature
@@ -67018,6 +67027,15 @@ power=2
toughness=2 toughness=2
[/card] [/card]
[card] [card]
name=Lightform
auto=withenchant manifest all(*[zpos=1]|mylibrary)
auto=teach(creature) flying
auto=teach(creature) lifelink
text=When Lightform enters the battlefield, it becomes an Aura with enchant creature. Manifest the top card of your library and attach Lightform to it. (To manifest a card, put it onto the battlefield face down as a 2/2 creature. Turn it face up any time for its mana cost if it's a creature card.) -- Enchanted creature has flying and lifelink.
mana={1}{W}{W}
type=Enchantment
[/card]
[card]
name=Lighthouse Chronologist name=Lighthouse Chronologist
auto={U}:counter(0/0,1,Level) asSorcery auto={U}:counter(0/0,1,Level) asSorcery
auto=this(counter{0/0.4.Level}) 1/1 auto=this(counter{0/0.4.Level}) 1/1
@@ -69502,6 +69520,17 @@ mana={1}{B}{G}
type=Sorcery type=Sorcery
[/card] [/card]
[card] [card]
name=Maelstrom Wanderer
auto=emblem transforms((,newability[aslongas(Maelstrom Wanderer|mybattlefield) lord(creature|mybattlefield) haste])) forever dontremove
autostack=if casted(this) then activate choice cascade:plibrarycount && activate choice cascade:plibrarycount
text=Creatures you control have haste. -- Cascade, cascade (When you cast this spell, exile cards from the top of your library until you exile a nonland card that costs less. You may cast it without paying its mana cost. Put the exiled cards on the bottom in a random order. Then do it again.)
mana={5}{U}{R}{G}
type=Legendary Creature
subtype=Elemental
power=7
toughness=5
[/card]
[card]
name=Maga, Traitor to Mortals name=Maga, Traitor to Mortals
auto=counter(1/1,X) && life:-X opponent auto=counter(1/1,X) && life:-X opponent
text=Maga, Traitor to Mortals enters the battlefield with X +1/+1 counters on it. -- When Maga enters the battlefield, target player loses life equal to the number of +1/+1 counters on it. text=Maga, Traitor to Mortals enters the battlefield with X +1/+1 counters on it. -- When Maga enters the battlefield, target player loses life equal to the number of +1/+1 counters on it.
@@ -91112,6 +91141,14 @@ power=2
toughness=3 toughness=3
[/card] [/card]
[card] [card]
name=Rageform
auto=withenchant manifest all(*[zpos=1]|mylibrary)
auto=teach(creature) double strike
text=When Rageform enters the battlefield, it becomes an Aura with enchant creature. Manifest the top card of your library and attach Rageform to it. (To manifest a card, put it onto the battlefield face down as a 2/2 creature. Turn it face up any time for its mana cost if it's a creature card.) -- Enchanted creature has double strike. (It deals both first-strike and regular combat damage.)
mana={2}{R}{R}
type=Enchantment
[/card]
[card]
name=Ragemonger name=Ragemonger
auto=lord(minotaur|mycastingzone) altercost(black,-1) auto=lord(minotaur|mycastingzone) altercost(black,-1)
auto=lord(minotaur|mycastingzone) altercost(red,-1) auto=lord(minotaur|mycastingzone) altercost(red,-1)
@@ -2425,12 +2425,6 @@ power=2
toughness=2 toughness=2
[/card] [/card]
[card] [card]
name=Cloudform
text=When Cloudform enters the battlefield, it becomes an Aura with enchant creature. Manifest the top card of your library and attach Cloudform to it. (To manifest a card, put it onto the battlefield face down as a 2/2 creature. Turn it face up any time for its mana cost if it's a creature card.) -- Enchanted creature has flying and hexproof.
mana={1}{U}{U}
type=Enchantment
[/card]
[card]
name=Coalition Flag name=Coalition Flag
text=Enchant creature you control -- Enchanted creature is a Flagbearer. -- While choosing targets as part of casting a spell or activating an ability, your opponents must choose at least one Flagbearer on the battlefield if able. text=Enchant creature you control -- Enchanted creature is a Flagbearer. -- While choosing targets as part of casting a spell or activating an ability, your opponents must choose at least one Flagbearer on the battlefield if able.
mana={W} mana={W}
@@ -8623,12 +8617,6 @@ mana={2}{W}{W}
type=Enchantment type=Enchantment
[/card] [/card]
[card] [card]
name=Lightform
text=When Lightform enters the battlefield, it becomes an Aura with enchant creature. Manifest the top card of your library and attach Lightform to it. (To manifest a card, put it onto the battlefield face down as a 2/2 creature. Turn it face up any time for its mana cost if it's a creature card.) -- Enchanted creature has flying and lifelink.
mana={1}{W}{W}
type=Enchantment
[/card]
[card]
name=Lightning Reflexes name=Lightning Reflexes
text=You may cast Lightning Reflexes as though it had flash. If you cast it any time a sorcery couldn't have been cast, the controller of the permanent it becomes sacrifices it at the beginning of the next cleanup step. -- Enchant creature -- Enchanted creature gets +1/+0 and has first strike. text=You may cast Lightning Reflexes as though it had flash. If you cast it any time a sorcery couldn't have been cast, the controller of the permanent it becomes sacrifices it at the beginning of the next cleanup step. -- Enchant creature -- Enchanted creature gets +1/+0 and has first strike.
mana={1}{R} mana={1}{R}
@@ -8906,15 +8894,6 @@ power=1
toughness=1 toughness=1
[/card] [/card]
[card] [card]
name=Maelstrom Wanderer
text=Creatures you control have haste. -- Cascade, cascade (When you cast this spell, exile cards from the top of your library until you exile a nonland card that costs less. You may cast it without paying its mana cost. Put the exiled cards on the bottom in a random order. Then do it again.)
mana={5}{U}{R}{G}
type=Legendary Creature
subtype=Elemental
power=7
toughness=5
[/card]
[card]
name=Mages' Contest name=Mages' Contest
text=You and target spell's controller bid life. You start the bidding with a bid of 1. In turn order, each player may top the high bid. The bidding ends if the high bid stands. The high bidder loses life equal to the high bid. If you win the bidding, counter that spell. text=You and target spell's controller bid life. You start the bidding with a bid of 1. In turn order, each player may top the high bid. The bidding ends if the high bid stands. The high bidder loses life equal to the high bid. If you win the bidding, counter that spell.
mana={1}{R}{R} mana={1}{R}{R}
@@ -12109,12 +12088,6 @@ mana={4}{PR}
type=Artifact type=Artifact
[/card] [/card]
[card] [card]
name=Rageform
text=When Rageform enters the battlefield, it becomes an Aura with enchant creature. Manifest the top card of your library and attach Rageform to it. (To manifest a card, put it onto the battlefield face down as a 2/2 creature. Turn it face up any time for its mana cost if it's a creature card.) -- Enchanted creature has double strike. (It deals both first-strike and regular combat damage.)
mana={2}{R}{R}
type=Enchantment
[/card]
[card]
name=Raging River name=Raging River
text=Whenever one or more creatures you control attack, each defending player divides all creatures without flying he or she controls into a "left" pile and a "right" pile. Then, for each attacking creature you control, choose "left" or "right." That creature can't be blocked this combat except by creatures with flying and creatures in a pile with the chosen label. text=Whenever one or more creatures you control attack, each defending player divides all creatures without flying he or she controls into a "left" pile and a "right" pile. Then, for each attacking creature you control, choose "left" or "right." That creature can't be blocked this combat except by creatures with flying and creatures in a pile with the chosen label.
mana={R}{R} mana={R}{R}
+12 -1
View File
@@ -6555,7 +6555,7 @@ public:
const string getMenuText() const string getMenuText()
{ {
return "phase alter"; return "Phase Alter";
} }
APhaseAlter * clone() const APhaseAlter * clone() const
@@ -7074,12 +7074,14 @@ public:
class AManifest: public InstantAbility class AManifest: public InstantAbility
{ {
public: public:
bool withenchant;
MTGAbility * andAbility; MTGAbility * andAbility;
AManifest(GameObserver* observer, int _id, MTGCardInstance * _source, MTGCardInstance * _target) : AManifest(GameObserver* observer, int _id, MTGCardInstance * _source, MTGCardInstance * _target) :
InstantAbility(observer, _id, _source) InstantAbility(observer, _id, _source)
{ {
target = _target; target = _target;
andAbility = NULL; andAbility = NULL;
withenchant = false;
} }
int resolve() int resolve()
@@ -7150,6 +7152,15 @@ public:
andAbilityClone->addToGame(); andAbilityClone->addToGame();
} }
} }
if(withenchant)
{
if(source->hasType(Subtypes::TYPE_ENCHANTMENT))
{
source->target = copy;
source->spellTargetType = "creature";
source->addType("aura");
}
}
} }
return 1; return 1;
} }
+4 -1
View File
@@ -96,7 +96,7 @@ void Interruptible::Render(MTGCardInstance * source, JQuad * targetQuad, string
JRenderer * renderer = JRenderer::GetInstance(); JRenderer * renderer = JRenderer::GetInstance();
bool hiddenview = aType == MTGAbility::HIDDENVIEW?true:false; bool hiddenview = aType == MTGAbility::HIDDENVIEW?true:false;
if (!targetQuad) if (!targetQuad && !mytargetsQuad.size())
{ {
/*if(source->controller()->isHuman() && source->controller()->opponent()->isAI() && !alt2.size() && _(action).c_str() == source->name) /*if(source->controller()->isHuman() && source->controller()->opponent()->isAI() && !alt2.size() && _(action).c_str() == source->name)
mFont->DrawString("You play ", x + 35, y-15 + GetVerticalTextOffset(), JGETEXT_LEFT); mFont->DrawString("You play ", x + 35, y-15 + GetVerticalTextOffset(), JGETEXT_LEFT);
@@ -1040,6 +1040,9 @@ void ActionStack::Update(float dt)
if (getCurrentTutorial() && (observer->players[0]->isHuman() || observer->players[1]->isHuman() ) ) if (getCurrentTutorial() && (observer->players[0]->isHuman() || observer->players[1]->isHuman() ) )
return; return;
if (observer->mLayers->actionLayer()->menuObject || observer->LPWeffect)
return;//dont do any of this if a menuobject exist.
askIfWishesToInterrupt = NULL; askIfWishesToInterrupt = NULL;
//modal = 0; //modal = 0;
+4 -1
View File
@@ -2898,7 +2898,8 @@ MTGAbility * AbilityFactory::parseMagicLine(string s, int id, Spell * spell, MTG
//manifest //manifest
found = s.find("manifest"); found = s.find("manifest");
if (found != string::npos) if (found != string::npos)
{ {//for cloudform, rageform and lightform
bool withenchant = s.find("withenchant") != string::npos;
MTGAbility * a = NEW AManifest(observer, id, card, target); MTGAbility * a = NEW AManifest(observer, id, card, target);
a->oneShot = 1; a->oneShot = 1;
if(storedAndAbility.size()) if(storedAndAbility.size())
@@ -2907,6 +2908,8 @@ MTGAbility * AbilityFactory::parseMagicLine(string s, int id, Spell * spell, MTG
storedAndAbility.clear(); storedAndAbility.clear();
((AManifest*)a)->andAbility = parseMagicLine(stored, id, spell, card); ((AManifest*)a)->andAbility = parseMagicLine(stored, id, spell, card);
} }
if(withenchant)
((AManifest*)a)->withenchant = true;
return a; return a;
} }
+2 -2
View File
@@ -569,13 +569,13 @@ MTGGameZone::~MTGGameZone()
//cause crashes for generated cards using castcard named card...??? test fix for now //cause crashes for generated cards using castcard named card...??? test fix for now
if(cards[i]->previous) if(cards[i]->previous)
{ {
cards[i]->previous = NULL;
delete cards[i]->previous; delete cards[i]->previous;
cards[i]->previous = NULL;
} }
if(cards[i]) if(cards[i])
{ {
cards[i] = NULL;
delete cards[i]; delete cards[i];
cards[i] = NULL;
} }
} }
cards.clear(); cards.clear();
+11 -1
View File
@@ -2177,9 +2177,19 @@ void WGuiFilterItem::updateValue()
else if (filterType == FILTER_BASIC) else if (filterType == FILTER_BASIC)
{ {
char buf[512]; char buf[512];
vector<string> baString;
for (int i = 0; i < Constants::NB_BASIC_ABILITIES; i++) for (int i = 0; i < Constants::NB_BASIC_ABILITIES; i++)
{//remove some others
if(i != 119 || i != 120 || i != 135 || i != 136 || i != 137 || i != 139 || i != 140 || i != 141 || i != 143
|| i != 144 || i != 145 || i != 146 || i != 147 || i != 148 || i != 149 || i != 150
|| i != 151 || i != 152 || i != 153 || i != 154)
baString.push_back(Constants::MTGBasicAbilities[i]);
}
//sort
sort(baString.begin(),baString.end());
for (unsigned int i = 0; i < baString.size(); i++)
{ {
string s = Constants::MTGBasicAbilities[i]; string s = baString[i];
sprintf(buf, "a:%s;", s.c_str()); sprintf(buf, "a:%s;", s.c_str());
s[0] = toupper(s[0]); s[0] = toupper(s[0]);
mParent->addArg(s, buf); mParent->addArg(s, buf);