modified Momir
This commit is contained in:
@@ -77,7 +77,7 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
virtual const string getDisplayName() const;
|
virtual const string getDisplayName() const;
|
||||||
void Render(MTGCardInstance * source, JQuad * targetQuad, string alt1, string alt2, string action, bool bigQuad = false);
|
void Render(MTGCardInstance * source, JQuad * targetQuad, string alt1, string alt2, string action, bool bigQuad = false, int aType = 0);
|
||||||
|
|
||||||
virtual int receiveEvent(WEvent *)
|
virtual int receiveEvent(WEvent *)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -220,6 +220,7 @@ public:
|
|||||||
ATTACK_COST = 36,
|
ATTACK_COST = 36,
|
||||||
BLOCK_COST = 37,
|
BLOCK_COST = 37,
|
||||||
GRANTEDFLASHBACK_COST = 38,
|
GRANTEDFLASHBACK_COST = 38,
|
||||||
|
FORCED_TOKEN_CREATOR,
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -480,7 +480,8 @@ public:
|
|||||||
|
|
||||||
int alreadyplayed;
|
int alreadyplayed;
|
||||||
MTGAllCards * collection;
|
MTGAllCards * collection;
|
||||||
MTGCardInstance * genCreature(int id);
|
MTGAbility * tokCreate;
|
||||||
|
MTGCardInstance * genCreature(int id, Player * p);
|
||||||
void Update(float dt);
|
void Update(float dt);
|
||||||
void Render();
|
void Render();
|
||||||
MTGMomirRule(GameObserver* observer, int _id, MTGAllCards * _collection);
|
MTGMomirRule(GameObserver* observer, int _id, MTGAllCards * _collection);
|
||||||
|
|||||||
@@ -88,7 +88,7 @@ float Interruptible::GetVerticalTextOffset() const
|
|||||||
}
|
}
|
||||||
|
|
||||||
void Interruptible::Render(MTGCardInstance * source, JQuad * targetQuad, string alt1, string alt2, string action,
|
void Interruptible::Render(MTGCardInstance * source, JQuad * targetQuad, string alt1, string alt2, string action,
|
||||||
bool bigQuad)
|
bool bigQuad, int aType)
|
||||||
{
|
{
|
||||||
WFont * mFont = observer->getResourceManager()->GetWFont(Fonts::MAIN_FONT);
|
WFont * mFont = observer->getResourceManager()->GetWFont(Fonts::MAIN_FONT);
|
||||||
mFont->SetColor(ARGB(255,255,255,255));
|
mFont->SetColor(ARGB(255,255,255,255));
|
||||||
@@ -132,9 +132,19 @@ void Interruptible::Render(MTGCardInstance * source, JQuad * targetQuad, string
|
|||||||
{
|
{
|
||||||
/*Pos pos = Pos(CardGui::BigWidth / 2, CardGui::BigHeight / 2 - 10, 1.0, 0.0, 220);
|
/*Pos pos = Pos(CardGui::BigWidth / 2, CardGui::BigHeight / 2 - 10, 1.0, 0.0, 220);
|
||||||
CardGui::DrawCard(source, pos, observer->getCardSelector()->GetDrawMode());*/
|
CardGui::DrawCard(source, pos, observer->getCardSelector()->GetDrawMode());*/
|
||||||
Pos pos = Pos(CardGui::BigWidth / 2, CardGui::BigHeight / 2 - 10, 0.80f, 0.0, 220);
|
if(observer->gameType() == GAME_TYPE_MOMIR && aType == MTGAbility::FORCED_TOKEN_CREATOR)
|
||||||
pos.actY = 142;//adjust y a little bit
|
{
|
||||||
CardGui::DrawCard(source, pos, observer->getCardSelector()->GetDrawMode());
|
Pos pos = Pos(CardGui::BigWidth / 2, CardGui::BigHeight / 2 - 10, 0.80f, 0.0, 220);
|
||||||
|
pos.actY = 142;//adjust y a little bit
|
||||||
|
CardGui::DrawCard(source, pos, observer->getCardSelector()->GetDrawMode());
|
||||||
|
}
|
||||||
|
else if (observer->gameType() != GAME_TYPE_MOMIR)
|
||||||
|
{
|
||||||
|
Pos pos = Pos(CardGui::BigWidth / 2, CardGui::BigHeight / 2 - 10, 0.80f, 0.0, 220);
|
||||||
|
pos.actY = 142;//adjust y a little bit
|
||||||
|
CardGui::DrawCard(source, pos, observer->getCardSelector()->GetDrawMode());
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (targetQuad)
|
if (targetQuad)
|
||||||
@@ -188,7 +198,10 @@ void StackAbility::Render()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Interruptible::Render(source, quad.get(), alt1, alt2, action);
|
if(observer->gameType() == GAME_TYPE_MOMIR)
|
||||||
|
Interruptible::Render(source, quad.get(), alt1, alt2, action, true, ability->aType);
|
||||||
|
else
|
||||||
|
Interruptible::Render(source, quad.get(), alt1, alt2, action);
|
||||||
}
|
}
|
||||||
StackAbility::StackAbility(GameObserver* observer, int id, MTGAbility * _ability) :
|
StackAbility::StackAbility(GameObserver* observer, int id, MTGAbility * _ability) :
|
||||||
Interruptible(observer, id), ability(_ability)
|
Interruptible(observer, id), ability(_ability)
|
||||||
|
|||||||
@@ -2381,13 +2381,14 @@ MTGMomirRule::MTGMomirRule(GameObserver* observer, int _id, MTGAllCards * _colle
|
|||||||
alreadyplayed = 0;
|
alreadyplayed = 0;
|
||||||
aType = MTGAbility::MOMIR;
|
aType = MTGAbility::MOMIR;
|
||||||
textAlpha = 0;
|
textAlpha = 0;
|
||||||
|
tokCreate = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
int MTGMomirRule::isReactingToClick(MTGCardInstance * card, ManaCost *)
|
int MTGMomirRule::isReactingToClick(MTGCardInstance * card, ManaCost *)
|
||||||
{
|
{
|
||||||
if (alreadyplayed)
|
if (alreadyplayed)
|
||||||
return 0;
|
return 0;
|
||||||
Player * player = game->currentlyActing();
|
Player * player = card->controller();
|
||||||
Player * currentPlayer = game->currentPlayer;
|
Player * currentPlayer = game->currentPlayer;
|
||||||
if (!player->game->hand->hasCard(card))
|
if (!player->game->hand->hasCard(card))
|
||||||
return 0;
|
return 0;
|
||||||
@@ -2403,7 +2404,7 @@ int MTGMomirRule::isReactingToClick(MTGCardInstance * card, ManaCost *)
|
|||||||
|
|
||||||
int MTGMomirRule::reactToClick(MTGCardInstance * card_to_discard)
|
int MTGMomirRule::reactToClick(MTGCardInstance * card_to_discard)
|
||||||
{
|
{
|
||||||
Player * player = game->currentlyActing();
|
Player * player = card_to_discard->controller();
|
||||||
ManaCost * cost = player->getManaPool();
|
ManaCost * cost = player->getManaPool();
|
||||||
int converted = cost->getConvertedCost();
|
int converted = cost->getConvertedCost();
|
||||||
int id = genRandomCreatureId(converted);
|
int id = genRandomCreatureId(converted);
|
||||||
@@ -2414,29 +2415,53 @@ int MTGMomirRule::reactToClick(MTGCardInstance * card_to_discard, int cardId)
|
|||||||
{
|
{
|
||||||
if (!isReactingToClick(card_to_discard))
|
if (!isReactingToClick(card_to_discard))
|
||||||
return 0;
|
return 0;
|
||||||
Player * player = game->currentlyActing();
|
Player * player = card_to_discard->controller();
|
||||||
ManaCost * cost = player->getManaPool();
|
ManaCost * cost = player->getManaPool();
|
||||||
player->getManaPool()->pay(cost);
|
player->getManaPool()->pay(cost);
|
||||||
MTGCardInstance * card = genCreature(cardId);
|
MTGCardInstance * card = genCreature(cardId, player);
|
||||||
|
card->owner = player;
|
||||||
player->game->putInZone(card_to_discard, card_to_discard->currentZone, player->game->graveyard);
|
player->game->putInZone(card_to_discard, card_to_discard->currentZone, player->game->graveyard);
|
||||||
|
|
||||||
player->game->stack->addCard(card);
|
/*player->game->stack->addCard(card);
|
||||||
Spell * spell = NEW Spell(game, card);
|
Spell * spell = NEW Spell(game, card);
|
||||||
spell->resolve();
|
spell->resolve();
|
||||||
spell->source->isToken = 1;
|
spell->source->isToken = 1;
|
||||||
delete spell;
|
delete spell;*/
|
||||||
|
|
||||||
|
string abi = "token(";
|
||||||
|
ostringstream tokID;
|
||||||
|
tokID << abs(cardId);
|
||||||
|
abi.append(tokID.str());
|
||||||
|
abi.append(") controller");
|
||||||
|
|
||||||
|
AbilityFactory af(game);
|
||||||
|
tokCreate = af.parseMagicLine(abi,game->mLayers->actionLayer()->getMaxId(),NULL, card->clone());
|
||||||
|
tokCreate->aType = MTGAbility::FORCED_TOKEN_CREATOR;
|
||||||
|
if(tokCreate)
|
||||||
|
tokCreate->fireAbility();
|
||||||
|
|
||||||
alreadyplayed = 1;
|
alreadyplayed = 1;
|
||||||
textAlpha = 255;
|
textAlpha = 255;
|
||||||
text = card->name;
|
text = card->name;
|
||||||
|
|
||||||
|
SAFE_DELETE(card);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
MTGCardInstance * MTGMomirRule::genCreature(int id)
|
MTGCardInstance * MTGMomirRule::genCreature(int id, Player * p)
|
||||||
{
|
{
|
||||||
if (!id)
|
if (!id)
|
||||||
return NULL;
|
return NULL;
|
||||||
Player * p = game->currentlyActing();
|
//Player * p = game->currentlyActing();
|
||||||
MTGCard * card = collection->getCardById(id);
|
MTGCard * card = collection->getCardById(id);
|
||||||
|
int myCC = card->data->getManaCost()->getConvertedCost();
|
||||||
|
int myId = 0;
|
||||||
|
while(card->getRarity() == Constants::RARITY_T)
|
||||||
|
{
|
||||||
|
myId = genRandomCreatureId(myCC);
|
||||||
|
card = collection->getCardById(myId);
|
||||||
|
}
|
||||||
|
|
||||||
return NEW MTGCardInstance(card, p->game);
|
return NEW MTGCardInstance(card, p->game);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user