Added missing cards from GRN sets, improved mutation trigger, improved Surveil ability, implemented trigger and offset on surveil ability to allow combo with other cards (see issue #1037 opened by luisguerin).
This commit is contained in:
@@ -1023,6 +1023,80 @@ AAAlterPoison::~AAAlterPoison()
|
||||
{
|
||||
}
|
||||
|
||||
//AA Surveil Event
|
||||
AASurveilEvent::AASurveilEvent(GameObserver* observer, int _id, MTGCardInstance * _source, Targetable * _target, ManaCost * _cost,
|
||||
int who) :
|
||||
ActivatedAbilityTP(observer, _id, _source, _target, _cost, who), card(_source)
|
||||
{
|
||||
}
|
||||
|
||||
int AASurveilEvent::resolve()
|
||||
{
|
||||
Damageable * _target = (Damageable *) getTarget();
|
||||
if (_target)
|
||||
{
|
||||
Player * pTarget = (Player*)_target;
|
||||
if(pTarget)
|
||||
{
|
||||
WEvent * e = NEW WEventCardSurveiled(card);
|
||||
game->receiveEvent(e);
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
const string AASurveilEvent::getMenuText()
|
||||
{
|
||||
return "Surveil event called";
|
||||
}
|
||||
|
||||
AASurveilEvent * AASurveilEvent::clone() const
|
||||
{
|
||||
return NEW AASurveilEvent(*this);
|
||||
}
|
||||
|
||||
AASurveilEvent::~AASurveilEvent()
|
||||
{
|
||||
}
|
||||
|
||||
//AA Surveil Offset
|
||||
AAAlterSurveilOffset::AAAlterSurveilOffset(GameObserver* observer, int _id, MTGCardInstance * _source, Targetable * _target, int surveilOffset, ManaCost * _cost,
|
||||
int who) :
|
||||
ActivatedAbilityTP(observer, _id, _source, _target, _cost, who), surveilOffset(surveilOffset)
|
||||
{
|
||||
}
|
||||
|
||||
int AAAlterSurveilOffset::resolve()
|
||||
{
|
||||
Damageable * _target = (Damageable *) getTarget();
|
||||
if (_target)
|
||||
{
|
||||
Player * pTarget = (Player*)_target;
|
||||
if(pTarget)
|
||||
{
|
||||
pTarget->surveilOffset += surveilOffset;
|
||||
if(pTarget->surveilOffset < 0)
|
||||
pTarget->surveilOffset = 0;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
const string AAAlterSurveilOffset::getMenuText()
|
||||
{
|
||||
WParsedInt parsedNum(surveilOffset);
|
||||
return _(parsedNum.getStringValue() + " Surveil Offset ").c_str();
|
||||
}
|
||||
|
||||
AAAlterSurveilOffset * AAAlterSurveilOffset::clone() const
|
||||
{
|
||||
return NEW AAAlterSurveilOffset(*this);
|
||||
}
|
||||
|
||||
AAAlterSurveilOffset::~AAAlterSurveilOffset()
|
||||
{
|
||||
}
|
||||
|
||||
//AA Yidaro Count
|
||||
AAAlterYidaroCount::AAAlterYidaroCount(GameObserver* observer, int _id, MTGCardInstance * _source, Targetable * _target, int yidarocount, ManaCost * _cost,
|
||||
int who) :
|
||||
|
||||
@@ -1208,8 +1208,12 @@ TriggeredAbility * AbilityFactory::parseTrigger(string s, string, int id, Spell
|
||||
|
||||
//Card is mutated
|
||||
if (TargetChooser * tc = parseSimpleTC(s, "mutated", card))
|
||||
return NEW TrCardMutated(observer, id, card, tc,once);
|
||||
|
||||
return NEW TrCardMutated(observer, id, card, tc,once,limitOnceATurn);
|
||||
|
||||
//Surveil has been performed from controller
|
||||
if (TargetChooser * tc = parseSimpleTC(s, "surveiled", card))
|
||||
return NEW TrCardSurveiled(observer, id, card, tc,once,limitOnceATurn);
|
||||
|
||||
//Token has been created
|
||||
if (TargetChooser * tc = parseSimpleTC(s, "tokencreated", card))
|
||||
return NEW TrTokenCreated(observer, id, card, tc,once);
|
||||
@@ -3389,6 +3393,27 @@ MTGAbility * AbilityFactory::parseMagicLine(string s, int id, Spell * spell, MTG
|
||||
card->mutation += atoi(splitMutatedUnder[1].c_str());
|
||||
}
|
||||
|
||||
//perform surveil
|
||||
found = s.find("surveil");
|
||||
if (found != string::npos)
|
||||
{
|
||||
Targetable * t = spell ? spell->getNextTarget() : NULL;
|
||||
MTGAbility * a = NEW AASurveilEvent(observer, id, card, t, NULL, who);
|
||||
a->oneShot = 1;
|
||||
return a;
|
||||
}
|
||||
|
||||
//set surveil offset controller (eg. Enhanced Surveillance)
|
||||
vector<string> splitSurveilOffset = parseBetween(s, "altersurvoffset:", " ", false);
|
||||
if (splitSurveilOffset.size())
|
||||
{
|
||||
int surveilOffset = atoi(splitSurveilOffset[1].c_str());
|
||||
Targetable * t = spell ? spell->getNextTarget() : NULL;
|
||||
MTGAbility * a = NEW AAAlterSurveilOffset(observer, id, card, t, surveilOffset, NULL, who);
|
||||
a->oneShot = 1;
|
||||
return a;
|
||||
}
|
||||
|
||||
//prevent next damage
|
||||
vector<string> splitPrevent = parseBetween(s, "prevent:", " ", false);
|
||||
if (splitPrevent.size())
|
||||
|
||||
@@ -36,6 +36,7 @@ Player::Player(GameObserver *observer, string file, string fileSmall, MTGDeck *
|
||||
drawCounter = 0;
|
||||
energyCount = 0;
|
||||
yidaroCount = 0;
|
||||
surveilOffset = 0;
|
||||
epic = 0;
|
||||
forcefield = 0;
|
||||
dealsdamagebycombat = 0;
|
||||
|
||||
@@ -598,6 +598,7 @@ void Rules::initGame(GameObserver *g, bool currentPlayerSet)
|
||||
p->preventable = initState.playerData[i].player->preventable;
|
||||
p->energyCount = initState.playerData[i].player->energyCount;
|
||||
p->yidaroCount = initState.playerData[i].player->yidaroCount;
|
||||
p->surveilOffset = initState.playerData[i].player->surveilOffset;
|
||||
if (initState.playerData[i].player->mAvatarName.size())
|
||||
{
|
||||
p->mAvatarName = initState.playerData[i].player->mAvatarName;
|
||||
|
||||
@@ -287,6 +287,11 @@ WEventplayerEnergized::WEventplayerEnergized(Player * player, int nb_count) :
|
||||
{
|
||||
}
|
||||
|
||||
WEventCardSurveiled::WEventCardSurveiled(MTGCardInstance * card) :
|
||||
WEventCardUpdate(card)
|
||||
{
|
||||
}
|
||||
|
||||
WEventCardMutated::WEventCardMutated(MTGCardInstance * card) :
|
||||
WEventCardUpdate(card)
|
||||
{
|
||||
@@ -500,6 +505,12 @@ Targetable * WEventCardMutated::getTarget(int target)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
Targetable * WEventCardSurveiled::getTarget(int target)
|
||||
{
|
||||
if (target) return card;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
Targetable * WEventTokenCreated::getTarget(int target)
|
||||
{
|
||||
if (target) return card;
|
||||
|
||||
Reference in New Issue
Block a user