diff --git a/projects/mtg/include/AllAbilities.h b/projects/mtg/include/AllAbilities.h index e7304b9c4..353188a71 100644 --- a/projects/mtg/include/AllAbilities.h +++ b/projects/mtg/include/AllAbilities.h @@ -2915,6 +2915,26 @@ public: } }; +/* set max level up on a levelup creature this is an Ai hint ability, no effect for players.*/ +class AAWhatsMax:public ActivatedAbility{ +public: + int value; + AAWhatsMax(int id, MTGCardInstance * card, MTGCardInstance * source,ManaCost * _cost = NULL, int doTap = 0,int value = 0):ActivatedAbility(id,card, _cost,0,doTap),value(value){ + } + int resolve(){ + MTGCardInstance * _target = (MTGCardInstance *) target; + if (source){ + source->MaxLevelUp = value; + } + return 1; + } + AAWhatsMax * clone() const{ + AAWhatsMax * a = NEW AAWhatsMax(*this); + a->isClone = 1; + return a; + } +}; + /* Can prevent a card from untapping next untap */ class AAFrozen:public ActivatedAbility{ public: diff --git a/projects/mtg/include/CardPrimitive.h b/projects/mtg/include/CardPrimitive.h index 656a7eb33..fc156fcd6 100644 --- a/projects/mtg/include/CardPrimitive.h +++ b/projects/mtg/include/CardPrimitive.h @@ -29,7 +29,6 @@ class CardPrimitive { string spellTargetType; int power; int toughness; - int level; vectortypes; CardPrimitive(); CardPrimitive(CardPrimitive * source); @@ -75,9 +74,6 @@ class CardPrimitive { int getPower(); void setToughness(int _toughness); int getToughness(); - void setMaxLevel(int _level); - int getMaxLevel(); - const vector& formattedText(); }; diff --git a/projects/mtg/include/MTGCardInstance.h b/projects/mtg/include/MTGCardInstance.h index 101105d15..9d5a95efa 100644 --- a/projects/mtg/include/MTGCardInstance.h +++ b/projects/mtg/include/MTGCardInstance.h @@ -60,6 +60,7 @@ class MTGCardInstance: public CardPrimitive, public MTGCard, public Damageable { int didblocked; int notblocked; int fresh; + int MaxLevelUp; Player * lastController; MTGGameZone * getCurrentZone(); MTGGameZone * previousZone; diff --git a/projects/mtg/src/AIPlayer.cpp b/projects/mtg/src/AIPlayer.cpp index 286c72ee9..02da40e47 100644 --- a/projects/mtg/src/AIPlayer.cpp +++ b/projects/mtg/src/AIPlayer.cpp @@ -246,7 +246,7 @@ int AIAction::getEfficiency(){ currentlevel = targetCounter->nb; } } - if (currentlevel < _target->level){ + if (currentlevel < _target->MaxLevelUp){ efficiency = 85; efficiency += currentlevel;//increase the efficeincy of leveling up by a small amount equal to current level. } diff --git a/projects/mtg/src/CardPrimitive.cpp b/projects/mtg/src/CardPrimitive.cpp index 339c38de9..7cdd68304 100644 --- a/projects/mtg/src/CardPrimitive.cpp +++ b/projects/mtg/src/CardPrimitive.cpp @@ -28,7 +28,6 @@ CardPrimitive::CardPrimitive(CardPrimitive * source){ power = source->power; toughness = source->toughness; - level = source->level; magicText = source->magicText; for(map::const_iterator it = source->magicTexts.begin(); it != source->magicTexts.end(); ++it) @@ -312,11 +311,3 @@ void CardPrimitive::setToughness(int _toughness){ int CardPrimitive::getToughness(){ return toughness; } - -void CardPrimitive::setMaxLevel(int _levelcap){ - level = _levelcap; -} - -int CardPrimitive::getMaxLevel(){ - return level; -} \ No newline at end of file diff --git a/projects/mtg/src/MTGAbility.cpp b/projects/mtg/src/MTGAbility.cpp index a2bc34247..cd9e2b733 100644 --- a/projects/mtg/src/MTGAbility.cpp +++ b/projects/mtg/src/MTGAbility.cpp @@ -1585,6 +1585,23 @@ MTGAbility * AbilityFactory::parseMagicLine(string s, int id, Spell * spell, MTG return a; } + //frozen, next untap this does not untap. + found = s.find("maxlevel:"); + if (found != string::npos){ + size_t start = s.find(":",found); + size_t end = s.find(" ",start); + int value; + if (end != string::npos){ + value = atoi(s.substr(start+1,end-start-1).c_str()); + } + else{ + value = atoi(s.substr(start+1).c_str()); + } + MTGAbility * a = NEW AAWhatsMax(id,card,card,NULL,0,value); + a->oneShot = 1; + return a; + } + //switch targest power with toughness found = s.find("swap"); if (found != string::npos){ diff --git a/projects/mtg/src/MTGDeck.cpp b/projects/mtg/src/MTGDeck.cpp index 0bbe84b9c..db3209607 100644 --- a/projects/mtg/src/MTGDeck.cpp +++ b/projects/mtg/src/MTGDeck.cpp @@ -105,12 +105,6 @@ int MTGAllCards::processConfLine(string &s, MTGCard *card, CardPrimitive * primi cost->kicker = ManaCost::parseManaCost(value); } break; - - case 'l': //Levelup, this is just to give Ai an idea when to stop leveling a creature. - if (!primitive) primitive = NEW CardPrimitive(); - primitive->setMaxLevel(atoi(val)); - break; - case 'o': //othercost if (!primitive) primitive = NEW CardPrimitive(); if (ManaCost * cost = primitive->getManaCost())