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:
@@ -1,5 +1,5 @@
|
||||
#include "PrecompiledHeader.h"
|
||||
|
||||
|
||||
#include "AIHints.h"
|
||||
#include "AIPlayerBaka.h"
|
||||
#include "utils.h"
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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];
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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 );
|
||||
|
||||
@@ -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) :
|
||||
|
||||
Reference in New Issue
Block a user