notany attribute

anytypeofmana makes manacost colorless... wip
This commit is contained in:
Anthony Calosa
2017-01-23 18:32:58 +08:00
parent 7f6e96459c
commit 94aefa6dba
9 changed files with 323 additions and 286 deletions

View File

@@ -68,12 +68,6 @@ mana={4}{G}
type=Sorcery
[/card]
[card]
name=Oath of Nissa
text=When Oath of Nissa enters the battlefield, look at the top three cards of your library. You may reveal a creature, land, or planeswalker card from among them and put it into your hand. Put the rest on the bottom of your library in any order. -- You may spend mana as though it were mana of any color to cast planeswalker spells.
mana={G}
type=Legendary Enchantment
[/card]
[card]
name=Reality Smasher
text=({C} represents colorless mana.) -- Trample, haste -- Whenever Reality Smasher becomes the target of a spell an opponent controls, counter that spell unless its controller discards a card.
mana={4}{C}

File diff suppressed because it is too large Load Diff

View File

@@ -266,6 +266,7 @@ public:
int myconvertedcost;
ManaCost * computeNewCost(MTGCardInstance * card,ManaCost * oldCost, ManaCost * refCost,bool noTrinisphere = false);
int countTrini;
bool anymanareplacement;
vector<MTGCardInstance*>imprintedCards;
int attackCost;
int attackCostBackup;

View File

@@ -264,7 +264,8 @@ class Constants
OPPNOMAXHAND = 142,
CANTCREW = 143,
HIDDENFACE = 144,
NB_BASIC_ABILITIES = 145,
ANYTYPEOFMANA = 145,
NB_BASIC_ABILITIES = 146,
RARITY_S = 'S', //Special Rarity
RARITY_M = 'M', //Mythics

View File

@@ -388,7 +388,14 @@ MTGCardInstance * CardDescriptor::match(MTGCardInstance * card)
}
//Counters
if (anyCounter)
if (anyCounter == -1)
{
if (card->counters->mCount)
{
match = NULL;
}
}
else if (anyCounter)
{
if (!(card->counters->mCount))
{

View File

@@ -1119,6 +1119,26 @@ void GameObserver::Affinity()
///we handle trisnisphere seperately because its a desaster.
if(card->getManaCost())//make sure we check, abiliy$!/token dont have a mancost object.
{
//change cost to colorless for anytypeofmana ability
if(card->has(Constants::ANYTYPEOFMANA))
{
card->anymanareplacement = true;
int convertedC = card->getManaCost()->getConvertedCost();
card->getManaCost()->changeCostTo( NEW ManaCost(ManaCost::parseManaCost("{0}", NULL, card)) );
for (int jj = 0; jj < convertedC; jj++)
{
card->getManaCost()->add(Constants::MTG_COLOR_ARTIFACT, 1);
}
}
else
{
if (card->anymanareplacement)
{
card->getManaCost()->changeCostTo( card->model->data->getManaCost() );
card->anymanareplacement = false;
}
}
if (card->has(Constants::TRINISPHERE))
{
for (int jj = card->getManaCost()->getConvertedCost(); jj < 3; jj++)

View File

@@ -241,6 +241,7 @@ void MTGCardInstance::initMTGCI()
miracle = false;
hasCopiedToken = false;
countTrini = 0;
anymanareplacement = false;
imprintedCards.clear();
attackCost = 0;
attackCostBackup = 0;

View File

@@ -175,7 +175,8 @@ const char* Constants::MTGBasicAbilities[] = {
"canblocktapped",
"oppnomaxhand",
"cantcrew",
"hiddenface"//test for facedown
"hiddenface",//test for facedown
"anytypeofmana"
};
map<string,int> Constants::MTGBasicAbilitiesMap;

View File

@@ -746,6 +746,10 @@ TargetChooser * TargetChooserFactory::createTargetChooser(string s, MTGCardInsta
{
cd->anyCounter = 1;
}
else if (attribute.find("{notany}") != string::npos)
{
cd->anyCounter = -1;
}
else
{
size_t start = attribute.find("{");