Update Rules

Also fix stack display and removed unnecessary code (border for card is
targetted/targetter since we used forcedborder in actionstack). Also
fixed some cards
This commit is contained in:
Anthony Calosa
2017-03-12 10:53:39 +08:00
parent 54f0cd7864
commit 4ed44c638f
13 changed files with 39 additions and 99 deletions
+1 -1
View File
@@ -1,5 +1,5 @@
#include "PrecompiledHeader.h"
#include "AIHints.h"
#include "AIPlayerBaka.h"
#include "utils.h"
+1
View File
@@ -1521,6 +1521,7 @@ void ActionStack::Render()
((Interruptible *) mObjects[i])->y = currenty + 40;
currenty += ((Interruptible *) mObjects[i])->mHeight + 40;
}
current->mHasFocus = false;//fix stack display
mObjects[i]->Render();
}
}
+2 -1
View File
@@ -8149,7 +8149,8 @@ MTGCardInstance * AACastCard::makeCard()
card = NEW MTGCardInstance(cardData, source->controller()->game);
card->owner = source->controller();
card->lastController = source->controller();
source->controller()->game->temp->addCard(card);
//source->controller()->game->temp->addCard(card);
source->controller()->game->sideboard->addCard(card);
return card;
}
+11 -1
View File
@@ -497,7 +497,17 @@ void CardGui::Render()
renderer->DrawRect(actX - 10 * actZ, actY - (1 * actZ), 6.f,6.f,ARGB(180,10,10,10));
}
}
if(!alternate && buff != "" && game && game->gameType() == GAME_TYPE_CLASSIC)//it seems that other game modes makes cards as tokens!!! hmmm...
if(card->chooseasubtype.size() && !alternate && game)
{
mFont->SetScale(DEFAULT_MAIN_FONT_SCALE);
char buffer[200];
sprintf(buffer, "%s", card->chooseasubtype.c_str());
mFont->SetColor(ARGB(static_cast<unsigned char>(actA),255,215,0));//Gold indicator
mFont->SetScale(0.8f);
mFont->DrawString(buffer, actX - 10 * actZ, actY - (25.3f * actZ));
mFont->SetScale(1);
}
if(!alternate && buff != "" && game)
{
mFont->SetScale(DEFAULT_MAIN_FONT_SCALE);
char buffer[200];
-2
View File
@@ -652,8 +652,6 @@ void GameObserver::gameStateBasedEffects()
{
for (int c = zone->nb_cards - 1; c >= 0; c--)
{
zone->cards[c]->cardistargetted = 0;
zone->cards[c]->cardistargetter = 0;
zone->cards[c]->forcedBorderA = 0;
zone->cards[c]->forcedBorderB = 0;
}
-8
View File
@@ -551,14 +551,6 @@ int AbilityFactory::parseCastRestrictions(MTGCardInstance * card, Player * playe
if(!card->discarded)
return 0;
}
check = restriction[i].find("cardistargeted");
if(check != string::npos)
{
bool istarget = card->isTargetted();
if(!istarget)
return 0;
}
check = restriction[i].find("copiedacard");
if(check != string::npos)
-58
View File
@@ -69,8 +69,6 @@ MTGCardInstance::MTGCardInstance(MTGCard * card, MTGPlayerCards * arg_belongs_to
copiedSetID = 0;
LKIpower = power;
LKItoughness = toughness;
cardistargetted = 0;
cardistargetter = 0;
forcedBorderA = 0;
forcedBorderB = 0;
myconvertedcost = getManaCost()->getConvertedCost();
@@ -951,62 +949,6 @@ bool MTGCardInstance::StackIsEmptyandSorcerySpeed()
return false;
}
//check targetted?
bool MTGCardInstance::isTargetted()
{
if(controller()->game->reveal->cards.size() || controller()->opponent()->game->reveal->cards.size())
return false;
if(getObserver()->mLayers->stackLayer()->count(0, NOT_RESOLVED) != 0)
{
ActionStack * stack = observer->mLayers->stackLayer();
for (int i = stack->mObjects.size() - 1; i >= 0; i--)
{
Interruptible * current = ((Interruptible *) stack->mObjects[i]);
if ((current->type == ACTION_SPELL || current->type == ACTION_ABILITY) && current->state == NOT_RESOLVED)
{
if(current->type == ACTION_SPELL)
{
Spell * spell = (Spell *) current;
if(spell->getNextTarget() && spell->getNextTarget() == (Targetable*)this)
return true;
}
}
}
}
if(cardistargetted)
return true;
return false;
}
//check targetter?
bool MTGCardInstance::isTargetter()
{
if(controller()->game->reveal->cards.size() || controller()->opponent()->game->reveal->cards.size())
return false;
if(getObserver()->mLayers->stackLayer()->count(0, NOT_RESOLVED) != 0)
{
ActionStack * stack = observer->mLayers->stackLayer();
for (int i = stack->mObjects.size() - 1; i >= 0; i--)
{
Interruptible * current = ((Interruptible *) stack->mObjects[i]);
if ((current->type == ACTION_SPELL || current->type == ACTION_ABILITY) && current->state == NOT_RESOLVED)
{
if(current->type == ACTION_SPELL)
{
Spell * spell = (Spell *) current;
if(spell && spell->source == this)
return true;
}
}
}
}
if(cardistargetter)
return true;
return false;
}
int MTGCardInstance::canBlock()
{
if (tapped && !has(Constants::CANBLOCKTAPPED))
+1 -1
View File
@@ -435,7 +435,7 @@ ManaCost::ManaCost(ManaCost * manaCost)
hybrids = manaCost->hybrids;
kicker = NEW ManaCost(manaCost->kicker);
if (kicker)
kicker->isMulti = manaCost->isMulti;
kicker->isMulti = manaCost->isMulti;
Retrace = NEW ManaCost( manaCost->Retrace );
BuyBack = NEW ManaCost( manaCost->BuyBack );
alternative = NEW ManaCost( manaCost->alternative );
-3
View File
@@ -129,9 +129,6 @@ WEventVampire::WEventVampire(MTGCardInstance * card,MTGCardInstance * source,MTG
WEventTarget::WEventTarget(MTGCardInstance * card,MTGCardInstance * source) :
WEventCardUpdate(card),card(card),source(source)
{
card->cardistargetted = 1;
if(source)
source->cardistargetter = 1;
}
WEventCardChangeType::WEventCardChangeType(MTGCardInstance * card, int type, bool before, bool after) :