Provoke
also add aicode for Amplify cards
This commit is contained in:
@@ -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
|
||||
|
||||
|
||||
@@ -68,6 +68,9 @@ public:
|
||||
bool damageToOpponent;
|
||||
bool damageToController;
|
||||
bool damageToCreature;
|
||||
bool isProvoked;
|
||||
MTGCardInstance * ProvokeTarget;
|
||||
MTGCardInstance * Provoker;
|
||||
bool mPropertiesChangedSinceLastUpdate;
|
||||
int reduxamount;
|
||||
int flanked;
|
||||
|
||||
@@ -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";}
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user