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]
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.)
mana={3}{U}
type=Sorcery
@@ -46757,7 +46758,9 @@ toughness=3
[/card]
[card]
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).
mana={3}{U}
type=Instant
@@ -59472,7 +59475,8 @@ subtype=Jace
[card]
name=Jace, Unraveler of Secrets
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,-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."
@@ -87940,7 +87944,8 @@ type=Instant
[/card]
[card]
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.)
mana={U}
type=Sorcery
@@ -92352,7 +92357,8 @@ subtype=Arcane
[/card]
[card]
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.)
mana={2}{B}
type=Sorcery
@@ -124835,7 +124841,8 @@ toughness=5
[/card]
[card]
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.
mana={3}{U}{U}
type=Sorcery
@@ -132613,7 +132620,7 @@ type=Instant
[card]
name=Welkin Guide
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.
mana={4}{W}
type=Creature
+15
View File
@@ -8046,10 +8046,25 @@ void AACastCard::Update(float dt)
toCheck = theNamedCard;
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);
TargetChooser * stc = tcf.createTargetChooser(toCheck->spellTargetType,toCheck);
if (!stc->validTargetsExist()||toCheck->isToken)
{
toCheck->spellTargetType = backupST;
processed = true;
this->forceDestroy = 1;
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));
}
}
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);
char buffer[200];
@@ -501,7 +501,30 @@ void CardGui::Render()
mFont->DrawString(buffer, actX - 10 * actZ, actY - (18.3f * actZ));
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)
{
unsigned c = -1;
+2
View File
@@ -712,6 +712,8 @@ void GameObserver::gameStateBasedEffects()
for (int j = zone->nb_cards - 1; j >= 0; j--)
{
MTGCardInstance * card = zone->cards[j];
//lastcontroller zone update
card->lastController = players[i];
card->entersBattlefield = 0;
card->LKIpower = card->power;
card->LKItoughness = card->toughness;
+1 -1
View File
@@ -51,13 +51,13 @@ void GameStateOptions::Start()
// 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.
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->Add(optionsList);
optionsList = NEW WGuiList("Game");
optionsList->Add(NEW WGuiHeader("Interface Options"));
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::HANDDIRECTION, "Hand direction", 1, 1, 0)));
optionsList->Add(NEW WDecoEnum(NEW OptionInteger(Options::MANADISPLAY, "Mana display", 3, 1, 0)));
+4 -1
View File
@@ -338,7 +338,10 @@ void GuiPlay::Update(float dt)
{
battleField.Update(dt);
for (iterator it = cards.begin(); it != cards.end(); ++it)
(*it)->Update(dt);
{
if((*it))
(*it)->Update(dt);
}
}
int GuiPlay::receiveEventPlus(WEvent * e)