also add aicode for Amplify cards
This commit is contained in:
Anthony Calosa
2017-03-09 18:37:55 +08:00
parent 650d794eec
commit b01c1455f5
11 changed files with 395 additions and 175 deletions

View File

@@ -7120,8 +7120,8 @@ public:
if(mt.size())
{
MTGAbility * fd = af.parseMagicLine(mt, GetId(), NULL, copy);
if(fd && isCreature)
{
if(fd)
{//allow morph to all if it exists
fd->target = copy;
if(fd->oneShot)
{
@@ -7165,6 +7165,63 @@ public:
return NEW AManifest(*this);
}
};
//provoke
class AProvoke: public InstantAbility
{
public:
bool setblocker;
MTGAbility * andAbility;
AProvoke(GameObserver* observer, int _id, MTGCardInstance * _source, MTGCardInstance * _target) :
InstantAbility(observer, _id, _source)
{
target = _target;
andAbility = NULL;
setblocker = false;
}
int resolve()
{
MTGCardInstance * card = (MTGCardInstance *) target;
if (card)
{
card->isProvoked = true;
card->Provoker = source;
if(!setblocker)//not provoke
card->untap();
source->ProvokeTarget = card;
if(andAbility)
{
MTGAbility * andAbilityClone = andAbility->clone();
andAbilityClone->target = card;
if(andAbility->oneShot)
{
andAbilityClone->resolve();
SAFE_DELETE(andAbilityClone);
}
else
{
andAbilityClone->addToGame();
}
}
}
return 1;
}
const string getMenuText()
{
if(setblocker)
return "Set Blocker";
return "Provoke";
}
virtual ostream& toString(ostream& out) const
{
out << "AAProvoke ::: (";
return InstantAbility::toString(out) << ")";
}
AProvoke * clone() const
{
return NEW AProvoke(*this);
}
};
//------------------
// utility functions

View File

@@ -68,6 +68,9 @@ public:
bool damageToOpponent;
bool damageToController;
bool damageToCreature;
bool isProvoked;
MTGCardInstance * ProvokeTarget;
MTGCardInstance * Provoker;
bool mPropertiesChangedSinceLastUpdate;
int reduxamount;
int flanked;

View File

@@ -186,7 +186,9 @@ public:
void untapAll();
MTGCardInstance * getNextAttacker(MTGCardInstance * previous);
MTGCardInstance * getNextLurer(MTGCardInstance * previous);
MTGCardInstance * getNextProvoker(MTGCardInstance * previous, MTGCardInstance * source);
MTGCardInstance * findALurer();
MTGCardInstance * findAProvoker(MTGCardInstance * source);
virtual ostream& toString(ostream&) const;
const char * getName(){return "battlefield";}
};