turned the "ai hint" for level up creatures into an MTGAbility.

this fixes a bug(?) that had high priority and maintains same effect as before. removed all traces of the "bugged(?) hint" from CardPrimitive.
Issue: 498
This commit is contained in:
omegablast2002@yahoo.com
2010-10-31 17:19:20 +00:00
parent 777098f763
commit 150c5f4c99
7 changed files with 39 additions and 20 deletions

View File

@@ -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:

View File

@@ -29,7 +29,6 @@ class CardPrimitive {
string spellTargetType;
int power;
int toughness;
int level;
vector<int>types;
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<string>& formattedText();
};

View File

@@ -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;

View File

@@ -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.
}

View File

@@ -28,7 +28,6 @@ CardPrimitive::CardPrimitive(CardPrimitive * source){
power = source->power;
toughness = source->toughness;
level = source->level;
magicText = source->magicText;
for(map<string,string>::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;
}

View File

@@ -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){

View File

@@ -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())