Merge pull request #944 from kevlahnota/master

Momir Indicator (non PSP)
This commit is contained in:
Anthony Calosa
2017-02-28 18:12:40 +08:00
committed by GitHub
6 changed files with 61 additions and 11 deletions
+14 -7
View File
@@ -42658,7 +42658,8 @@ toughness=2
[/card] [/card]
[card] [card]
name=Foresee name=Foresee
auto=scry:4 scrycore draw:2 delayed dontshow scrycoreend scryend aicode=activate draw:2 controller
auto=name(Scry) reveal:4 optionone name(Put On Top) target(<upto:4>*|reveal) moveto(mylibrary) optiononeend optiontwo name(put on bottom) target(<4>*|reveal) bottomoflibrary optiontwoend afterrevealed transforms((,newability[draw:2 controller])) oneshot afterrevealedend revealend
text=Scry 4, then draw two cards. (To scry 4, look at the top four cards of your library, then put any number of them on the bottom of your library and the rest on top in any order.) text=Scry 4, then draw two cards. (To scry 4, look at the top four cards of your library, then put any number of them on the bottom of your library and the rest on top in any order.)
mana={3}{U} mana={3}{U}
type=Sorcery type=Sorcery
@@ -46757,7 +46758,9 @@ toughness=3
[/card] [/card]
[card] [card]
name=Glimmer of Genius name=Glimmer of Genius
auto=scry:2 scrycore delayed dontshow donothing scrycoreend scryend && ability$!choice alterenergy:2 controller!$ controller && ability$!choice draw:2 controller!$ controller aicode=activate draw:2 controller
auto=name(Scry) reveal:2 optionone name(Put On Top) target(<upto:2>*|reveal) moveto(mylibrary) optiononeend optiontwo name(put on bottom) target(<2>*|reveal) bottomoflibrary optiontwoend afterrevealed transforms((,newability[draw:2 controller])) oneshot afterrevealedend revealend
auto=alterenergy:2 controller
text=Scry 2, then draw two cards. You get {E}{E} (two energy counters). text=Scry 2, then draw two cards. You get {E}{E} (two energy counters).
mana={3}{U} mana={3}{U}
type=Instant type=Instant
@@ -59472,7 +59475,8 @@ subtype=Jace
[card] [card]
name=Jace, Unraveler of Secrets name=Jace, Unraveler of Secrets
auto=counter(0/0,5,loyalty) auto=counter(0/0,5,loyalty)
auto={C(0/0,1,Loyalty)}:name(+1: Scry) scry:1 scrycore delayed draw:1 scrycoreend scryend aicode=activate draw:1 controller
auto={C(0/0,1,Loyalty)}:name(+1: Scry) reveal:1 optionone name(Put On Top) target(<upto:1>*|reveal) moveto(mylibrary) optiononeend optiontwo name(put on bottom) target(<1>*|reveal) bottomoflibrary optiontwoend afterrevealed transforms((,newability[draw:1 controller])) oneshot afterrevealedend revealend
auto={C(0/0,-2,Loyalty)}:name(-2: Bounce) moveto(ownerhand) target(creature) auto={C(0/0,-2,Loyalty)}:name(-2: Bounce) moveto(ownerhand) target(creature)
auto={C(0/0,-8,Loyalty)}:name(-8: Emblem) emblem transforms((,newability[@movedto(*|opponentstack) restriction{thisturn(*|opponentstack)~equalto~0}:choice fizzle all(*|opponentstack)])) forever dontremove auto={C(0/0,-8,Loyalty)}:name(-8: Emblem) emblem transforms((,newability[@movedto(*|opponentstack) restriction{thisturn(*|opponentstack)~equalto~0}:choice fizzle all(*|opponentstack)])) forever dontremove
text=+1: Scry 1, then draw a card. -- -2: Return target creature to its owner's hand. -- -8: You get an emblem with "Whenever an opponent casts his or her first spell each turn, counter that spell." text=+1: Scry 1, then draw a card. -- -2: Return target creature to its owner's hand. -- -8: You get an emblem with "Whenever an opponent casts his or her first spell each turn, counter that spell."
@@ -87940,7 +87944,8 @@ type=Instant
[/card] [/card]
[card] [card]
name=Preordain name=Preordain
auto=scry:2 scrycore draw:1 delayed dontshow scrycoreend scryend aicode=activate draw:1
auto=name(Scry) reveal:2 optionone name(Put On Top) target(<upto:2>*|reveal) moveto(mylibrary) optiononeend optiontwo name(put on bottom) target(<2>*|reveal) bottomoflibrary optiontwoend afterrevealed transforms((,newability[draw:1 controller])) oneshot afterrevealedend revealend
text=Scry 2, then draw a card. (To scry 2, look at the top two cards of your library, then put any number of them on the bottom of your library and the rest on top in any order.) text=Scry 2, then draw a card. (To scry 2, look at the top two cards of your library, then put any number of them on the bottom of your library and the rest on top in any order.)
mana={U} mana={U}
type=Sorcery type=Sorcery
@@ -92352,7 +92357,8 @@ subtype=Arcane
[/card] [/card]
[card] [card]
name=Read the Bones name=Read the Bones
auto=scry:2 scrycore dontshow delayed draw:2 && life:-2 scrycoreend scryend aicode=activate transforms((,newability[draw:2 controller],newability[life:-2 controller])) oneshot
auto=name(Scry) reveal:2 optionone name(Put On Top) target(<upto:2>*|reveal) moveto(mylibrary) optiononeend optiontwo name(put on bottom) target(<2>*|reveal) bottomoflibrary optiontwoend afterrevealed transforms((,newability[draw:2 controller],newability[life:-2 controller])) oneshot afterrevealedend revealend
text=Scry 2, then draw two cards. You lose 2 life. (To scry 2, look at the top two cards of your library, then put any number of them on the bottom of your library and the rest on top in any order.) text=Scry 2, then draw two cards. You lose 2 life. (To scry 2, look at the top two cards of your library, then put any number of them on the bottom of your library and the rest on top in any order.)
mana={2}{B} mana={2}{B}
type=Sorcery type=Sorcery
@@ -124835,7 +124841,8 @@ toughness=5
[/card] [/card]
[card] [card]
name=Ugin's Insight name=Ugin's Insight
auto=reveal:convertedcost:highest:*:mybattlefield optionone name(Look) target(<1>*|reveal) doNothing optiononeend optiontwo target(<60>*|reveal) moveto(mylibrary) optiontwoend revealend aicode=activate draw:3 controller
auto=name(Scry) reveal:convertedcost:highest:*:mybattlefield optionone name(Put On Top) target(<upto:convertedcost:highest:*:mybattlefield>*|reveal) moveto(mylibrary) optiononeend optiontwo name(put on bottom) target(<convertedcost:highest:*:mybattlefield>*|reveal) bottomoflibrary optiontwoend afterrevealed transforms((,newability[draw:3 controller])) oneshot afterrevealedend revealend
text=Scry X, where X is the highest converted mana cost among permanents you control, then draw three cards. text=Scry X, where X is the highest converted mana cost among permanents you control, then draw three cards.
mana={3}{U}{U} mana={3}{U}{U}
type=Sorcery type=Sorcery
@@ -132613,7 +132620,7 @@ type=Instant
[card] [card]
name=Welkin Guide name=Welkin Guide
abilities=flying abilities=flying
auto=target(creature) 2/2 ueot && flying ueot auto=choice target(creature) 2/2 ueot && flying ueot
text=Flying -- When Welkin Guide enters the battlefield, target creature gets +2/+2 and gains flying until end of turn. text=Flying -- When Welkin Guide enters the battlefield, target creature gets +2/+2 and gains flying until end of turn.
mana={4}{W} mana={4}{W}
type=Creature type=Creature
+15
View File
@@ -8046,10 +8046,25 @@ void AACastCard::Update(float dt)
toCheck = theNamedCard; toCheck = theNamedCard;
if(toCheck && toCheck->spellTargetType.size()) if(toCheck && toCheck->spellTargetType.size())
{ {
string backupST = toCheck->spellTargetType;
if((toCheck->spellTargetType == "opponent") && (toCheck->owner != source->controller()))
toCheck->spellTargetType = "controller";
else if((toCheck->spellTargetType.find("|opponent") != string::npos) && (toCheck->owner != source->controller()))
{
string replaceMe = backupST;
toCheck->spellTargetType = cReplaceString(replaceMe, "|opponent", "|my");
}
//Since we control the card to cast, if the card should target an opponent,
//direct it to source ability controller->opponent
//example card is Bribery, if we cast it targeting from opponent's library,
//we should target the source ability controller->opponent
TargetChooserFactory tcf(game); TargetChooserFactory tcf(game);
TargetChooser * stc = tcf.createTargetChooser(toCheck->spellTargetType,toCheck); TargetChooser * stc = tcf.createTargetChooser(toCheck->spellTargetType,toCheck);
if (!stc->validTargetsExist()||toCheck->isToken) if (!stc->validTargetsExist()||toCheck->isToken)
{ {
toCheck->spellTargetType = backupST;
processed = true; processed = true;
this->forceDestroy = 1; this->forceDestroy = 1;
return; return;
+25 -2
View File
@@ -491,7 +491,7 @@ void CardGui::Render()
renderer->DrawRect(actX - 10 * actZ, actY - (1 * actZ), 6.f,6.f,ARGB(180,10,10,10)); renderer->DrawRect(actX - 10 * actZ, actY - (1 * actZ), 6.f,6.f,ARGB(180,10,10,10));
} }
} }
if(!alternate && buff != "" && game->gameType() == GAME_TYPE_CLASSIC)//it seems that other game modes makes cards as tokens!!! hmmm... if(!alternate && buff != "" && game && game->gameType() == GAME_TYPE_CLASSIC)//it seems that other game modes makes cards as tokens!!! hmmm...
{ {
mFont->SetScale(DEFAULT_MAIN_FONT_SCALE); mFont->SetScale(DEFAULT_MAIN_FONT_SCALE);
char buffer[200]; char buffer[200];
@@ -501,7 +501,30 @@ void CardGui::Render()
mFont->DrawString(buffer, actX - 10 * actZ, actY - (18.3f * actZ)); mFont->DrawString(buffer, actX - 10 * actZ, actY - (18.3f * actZ));
mFont->SetScale(1); mFont->SetScale(1);
} }
#if !defined (PSP)
if(game && game->gameType() == GAME_TYPE_MOMIR)
{
if(game->isInHand(card) && !card->controller()->isAI())
{
if ((game->currentPlayer != card->controller()) || (card->controller()->game->playRestrictions->canPutIntoZone(card, card->controller()->game->inPlay) == PlayRestriction::CANT_PLAY))
{
mFont->SetScale(0.4f);
mFont->SetColor(ARGB(static_cast<unsigned char>(actA),255,0,0));
mFont->SetScale(actZ);
mFont->DrawString("+", actX - 12 * actZ, actY - (18.8f * actZ));
mFont->SetScale(1);
}
else
{
mFont->SetScale(0.4f);
mFont->SetColor(ARGB(static_cast<unsigned char>(actA),0,255,0));
mFont->SetScale(actZ);
mFont->DrawString("+", actX - 12 * actZ, actY - (18.8f * actZ));
mFont->SetScale(1);
}
}
}
#endif
if (card->counters->mCount > 0) if (card->counters->mCount > 0)
{ {
unsigned c = -1; unsigned c = -1;
+2
View File
@@ -712,6 +712,8 @@ void GameObserver::gameStateBasedEffects()
for (int j = zone->nb_cards - 1; j >= 0; j--) for (int j = zone->nb_cards - 1; j >= 0; j--)
{ {
MTGCardInstance * card = zone->cards[j]; MTGCardInstance * card = zone->cards[j];
//lastcontroller zone update
card->lastController = players[i];
card->entersBattlefield = 0; card->entersBattlefield = 0;
card->LKIpower = card->power; card->LKIpower = card->power;
card->LKItoughness = card->toughness; card->LKItoughness = card->toughness;
+1 -1
View File
@@ -51,13 +51,13 @@ void GameStateOptions::Start()
// optionsList->Add(NEW OptionInteger(Options::INTERRUPTMYABILITIES, "Interrupt my abilities")); // optionsList->Add(NEW OptionInteger(Options::INTERRUPTMYABILITIES, "Interrupt my abilities"));
//this is a dev option, not meant for standard play. uncomment if you need to see abilities you own hitting the stack. //this is a dev option, not meant for standard play. uncomment if you need to see abilities you own hitting the stack.
optionsList->Add(NEW OptionInteger(Options::INTERRUPT_SECONDMAIN, "Interrupt opponent's end of turn")); optionsList->Add(NEW OptionInteger(Options::INTERRUPT_SECONDMAIN, "Interrupt opponent's end of turn"));
optionsList->Add(NEW OptionInteger(Options::SHOWTOKENS, "Show Tokens in Editor"));
optionsTabs = NEW WGuiTabMenu(); optionsTabs = NEW WGuiTabMenu();
optionsTabs->Add(optionsList); optionsTabs->Add(optionsList);
optionsList = NEW WGuiList("Game"); optionsList = NEW WGuiList("Game");
optionsList->Add(NEW WGuiHeader("Interface Options")); optionsList->Add(NEW WGuiHeader("Interface Options"));
optionsList->Add(NEW OptionInteger(Options::BLKBORDER, "All Black Border")); optionsList->Add(NEW OptionInteger(Options::BLKBORDER, "All Black Border"));
optionsList->Add(NEW OptionInteger(Options::SHOWTOKENS, "Show Tokens in Editor"));
optionsList->Add(NEW WDecoEnum(NEW OptionInteger(Options::CLOSEDHAND, "Closed hand", 1, 1, 0))); optionsList->Add(NEW WDecoEnum(NEW OptionInteger(Options::CLOSEDHAND, "Closed hand", 1, 1, 0)));
optionsList->Add(NEW WDecoEnum(NEW OptionInteger(Options::HANDDIRECTION, "Hand direction", 1, 1, 0))); optionsList->Add(NEW WDecoEnum(NEW OptionInteger(Options::HANDDIRECTION, "Hand direction", 1, 1, 0)));
optionsList->Add(NEW WDecoEnum(NEW OptionInteger(Options::MANADISPLAY, "Mana display", 3, 1, 0))); optionsList->Add(NEW WDecoEnum(NEW OptionInteger(Options::MANADISPLAY, "Mana display", 3, 1, 0)));
+3
View File
@@ -338,7 +338,10 @@ void GuiPlay::Update(float dt)
{ {
battleField.Update(dt); battleField.Update(dt);
for (iterator it = cards.begin(); it != cards.end(); ++it) for (iterator it = cards.begin(); it != cards.end(); ++it)
{
if((*it))
(*it)->Update(dt); (*it)->Update(dt);
}
} }
int GuiPlay::receiveEventPlus(WEvent * e) int GuiPlay::receiveEventPlus(WEvent * e)