Added CMR set, added Monarch game mode, added/fix several primitives and improved Android downloader.
This commit is contained in:
@@ -1135,6 +1135,46 @@ AAAlterYidaroCount::~AAAlterYidaroCount()
|
||||
{
|
||||
}
|
||||
|
||||
//AA Monarch
|
||||
AAAlterMonarch::AAAlterMonarch(GameObserver* observer, int _id, MTGCardInstance * _source, Targetable * _target, ManaCost * _cost,
|
||||
int who) :
|
||||
ActivatedAbilityTP(observer, _id, _source, _target, _cost, who)
|
||||
{
|
||||
}
|
||||
|
||||
int AAAlterMonarch::resolve()
|
||||
{
|
||||
Damageable * _target = (Damageable *) getTarget();
|
||||
if (_target)
|
||||
{
|
||||
Player * pTarget = (Player*)_target;
|
||||
if(pTarget)
|
||||
{
|
||||
if(!pTarget->monarch){
|
||||
pTarget->monarch = 1;
|
||||
pTarget->opponent()->monarch = 0;
|
||||
WEvent * e = NEW WEventplayerMonarch(pTarget);
|
||||
game->receiveEvent(e);
|
||||
}
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
const string AAAlterMonarch::getMenuText()
|
||||
{
|
||||
return _("A player becomes the Monarch").c_str();
|
||||
}
|
||||
|
||||
AAAlterMonarch * AAAlterMonarch::clone() const
|
||||
{
|
||||
return NEW AAAlterMonarch(*this);
|
||||
}
|
||||
|
||||
AAAlterMonarch::~AAAlterMonarch()
|
||||
{
|
||||
}
|
||||
|
||||
//AA Energy Counters
|
||||
AAAlterEnergy::AAAlterEnergy(GameObserver* observer, int _id, MTGCardInstance * _source, Targetable * _target, int energy, ManaCost * _cost,
|
||||
int who) :
|
||||
|
||||
@@ -1194,6 +1194,14 @@ TriggeredAbility * AbilityFactory::parseTrigger(string s, string, int id, Spell
|
||||
if (TargetChooser * tc = parseSimpleTC(s, "energizedfoeof", card))
|
||||
return NEW TrplayerEnergized(observer, id, card, tc,once,false,true);
|
||||
|
||||
//becomes monarch - controller of card
|
||||
if (TargetChooser * tc = parseSimpleTC(s, "becomesmonarchof", card))
|
||||
return NEW TrplayerMonarch(observer, id, card, tc,once,true,false);
|
||||
|
||||
//becomes monarch - opponent of card controller
|
||||
if (TargetChooser * tc = parseSimpleTC(s, "becomesmonarchfoeof", card))
|
||||
return NEW TrplayerMonarch(observer, id, card, tc,once,false,true);
|
||||
|
||||
//drawn player - controller of card - dynamic version drawof(player) -> returns current controller even with exchange of card controller
|
||||
if (TargetChooser * tc = parseSimpleTC(s, "drawof", card))
|
||||
return NEW TrcardDrawn(observer, id, card, tc,once,true,false);
|
||||
@@ -3372,6 +3380,16 @@ MTGAbility * AbilityFactory::parseMagicLine(string s, int id, Spell * spell, MTG
|
||||
return a;
|
||||
}
|
||||
|
||||
//becomes monarch
|
||||
vector<string> splitMonarch = parseBetween(s, "becomesmonarch", " ", false);
|
||||
if (splitMonarch.size())
|
||||
{
|
||||
Targetable * t = spell ? spell->getNextTarget() : NULL;
|
||||
MTGAbility * a = NEW AAAlterMonarch(observer, id, card, t, NULL, who);
|
||||
a->oneShot = 1;
|
||||
return a;
|
||||
}
|
||||
|
||||
//alter mutation counter on target card with trigger activation
|
||||
vector<string> splitMutated = parseBetween(s, "altermutationcounter:", " ", false);
|
||||
if (splitMutated.size())
|
||||
|
||||
@@ -194,7 +194,8 @@ const char* Constants::MTGBasicAbilities[] = {
|
||||
"mentor",
|
||||
"prowess",
|
||||
"nofizzle alternative", //No fizzle if card has been paid with alternative cost.
|
||||
"hasotherkicker" //Kicker cost is expressed with "other" keyword (es. not mana kicker such as life and/or tap a creature)
|
||||
"hasotherkicker", //Kicker cost is expressed with "other" keyword (es. not mana kicker such as life and/or tap a creature),
|
||||
"partner" //Has partner ability
|
||||
};
|
||||
|
||||
map<string,int> Constants::MTGBasicAbilitiesMap;
|
||||
|
||||
@@ -36,6 +36,7 @@ Player::Player(GameObserver *observer, string file, string fileSmall, MTGDeck *
|
||||
drawCounter = 0;
|
||||
energyCount = 0;
|
||||
yidaroCount = 0;
|
||||
monarch = 0;
|
||||
surveilOffset = 0;
|
||||
epic = 0;
|
||||
forcefield = 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->monarch = initState.playerData[i].player->monarch;
|
||||
p->surveilOffset = initState.playerData[i].player->surveilOffset;
|
||||
if (initState.playerData[i].player->mAvatarName.size())
|
||||
{
|
||||
|
||||
@@ -287,6 +287,11 @@ WEventplayerEnergized::WEventplayerEnergized(Player * player, int nb_count) :
|
||||
{
|
||||
}
|
||||
|
||||
WEventplayerMonarch::WEventplayerMonarch(Player * player) :
|
||||
player(player)
|
||||
{
|
||||
}
|
||||
|
||||
WEventCardSurveiled::WEventCardSurveiled(MTGCardInstance * card) :
|
||||
WEventCardUpdate(card)
|
||||
{
|
||||
@@ -523,6 +528,12 @@ Targetable * WEventplayerEnergized::getTarget(Player * player)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
Targetable * WEventplayerMonarch::getTarget(Player * player)
|
||||
{
|
||||
if (player) return player;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
std::ostream& WEvent::toString(std::ostream& out) const
|
||||
{
|
||||
return out << "EVENT";
|
||||
|
||||
Reference in New Issue
Block a user