serum powder code
serum powder second ability... Any time you could mulligan and Serum Powder is in your hand, you may exile all the cards from your hand, then draw that many cards.
This commit is contained in:
@@ -82616,6 +82616,14 @@ power=2
|
|||||||
toughness=2
|
toughness=2
|
||||||
[/card]
|
[/card]
|
||||||
[card]
|
[card]
|
||||||
|
name=Serum Powder
|
||||||
|
auto={T}:Add{1}
|
||||||
|
autohand={0}:serumpowder
|
||||||
|
text={T}: Add {1} to your mana pool. -- Any time you could mulligan and Serum Powder is in your hand, you may exile all the cards from your hand, then draw that many cards. (You can do this in addition to taking mulligans.)
|
||||||
|
mana={3}
|
||||||
|
type=Artifact
|
||||||
|
[/card]
|
||||||
|
[card]
|
||||||
name=Serum Tank
|
name=Serum Tank
|
||||||
auto=counter(0/0,1,Charge)
|
auto=counter(0/0,1,Charge)
|
||||||
auto=@movedTo(other artifact|Battlefield):counter(0/0,1,Charge)
|
auto=@movedTo(other artifact|Battlefield):counter(0/0,1,Charge)
|
||||||
|
|||||||
@@ -14506,12 +14506,6 @@ mana={W}
|
|||||||
type=Enchantment
|
type=Enchantment
|
||||||
[/card]
|
[/card]
|
||||||
[card]
|
[card]
|
||||||
name=Serum Powder
|
|
||||||
text={T}: Add {1} to your mana pool. -- Any time you could mulligan and Serum Powder is in your hand, you may exile all the cards from your hand, then draw that many cards. (You can do this in addition to taking mulligans.)
|
|
||||||
mana={3}
|
|
||||||
type=Artifact
|
|
||||||
[/card]
|
|
||||||
[card]
|
|
||||||
name=Serum Visions
|
name=Serum Visions
|
||||||
text=Draw a card. -- Scry 2. (To scry 2, look at the top two cards of your library, then put any number of them on the bottom of your library and the rest on top in any order.)
|
text=Draw a card. -- Scry 2. (To scry 2, look at the top two cards of your library, then put any number of them on the bottom of your library and the rest on top in any order.)
|
||||||
mana={U}
|
mana={U}
|
||||||
|
|||||||
@@ -5540,6 +5540,17 @@ public:
|
|||||||
AAShuffle * clone() const;
|
AAShuffle * clone() const;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
//Mulligan
|
||||||
|
class AAMulligan: public ActivatedAbilityTP
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
AAMulligan(GameObserver* observer, int _id, MTGCardInstance * card, Targetable * _target, ManaCost * _cost = NULL, int who =
|
||||||
|
TargetChooser::UNSET);
|
||||||
|
int resolve();
|
||||||
|
const string getMenuText();
|
||||||
|
AAMulligan * clone() const;
|
||||||
|
};
|
||||||
|
|
||||||
//Remove Mana From ManaPool
|
//Remove Mana From ManaPool
|
||||||
class AARemoveMana: public ActivatedAbilityTP
|
class AARemoveMana: public ActivatedAbilityTP
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -151,6 +151,7 @@ class GameObserver{
|
|||||||
bool undo();
|
bool undo();
|
||||||
bool isLoading(){ return mLoading; };
|
bool isLoading(){ return mLoading; };
|
||||||
void Mulligan(Player* player = NULL);
|
void Mulligan(Player* player = NULL);
|
||||||
|
void serumMulligan(Player* player = NULL);
|
||||||
Player* getPlayer(size_t index) { return players[index];};
|
Player* getPlayer(size_t index) { return players[index];};
|
||||||
bool isStarted() { return (mLayers!=NULL);};
|
bool isStarted() { return (mLayers!=NULL);};
|
||||||
RandomGenerator* getRandomGenerator() { return &randomGenerator; };
|
RandomGenerator* getRandomGenerator() { return &randomGenerator; };
|
||||||
|
|||||||
@@ -68,6 +68,7 @@ public:
|
|||||||
MTGInPlay * inPlay();
|
MTGInPlay * inPlay();
|
||||||
ManaPool * getManaPool();
|
ManaPool * getManaPool();
|
||||||
void takeMulligan();
|
void takeMulligan();
|
||||||
|
void serumMulligan();
|
||||||
ManaCost * doesntEmpty;
|
ManaCost * doesntEmpty;
|
||||||
ManaCost * poolDoesntEmpty;
|
ManaCost * poolDoesntEmpty;
|
||||||
void cleanupPhase();
|
void cleanupPhase();
|
||||||
|
|||||||
@@ -2941,6 +2941,32 @@ AAShuffle * AAShuffle::clone() const
|
|||||||
return NEW AAShuffle(*this);
|
return NEW AAShuffle(*this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Mulligan
|
||||||
|
AAMulligan::AAMulligan(GameObserver* observer, int _id, MTGCardInstance * card, Targetable * _target, ManaCost * _cost, int who) :
|
||||||
|
ActivatedAbilityTP(observer, _id, card, _target, _cost, who)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
int AAMulligan::resolve()
|
||||||
|
{
|
||||||
|
Player * player = getPlayerFromTarget(getTarget());
|
||||||
|
if (player)
|
||||||
|
{
|
||||||
|
player->serumMulligan();
|
||||||
|
}
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
const string AAMulligan::getMenuText()
|
||||||
|
{
|
||||||
|
return "Mulligan";
|
||||||
|
}
|
||||||
|
|
||||||
|
AAMulligan * AAMulligan::clone() const
|
||||||
|
{
|
||||||
|
return NEW AAMulligan(*this);
|
||||||
|
}
|
||||||
|
|
||||||
// Remove Mana From ManaPool
|
// Remove Mana From ManaPool
|
||||||
AARemoveMana::AARemoveMana(GameObserver* observer, int _id, MTGCardInstance * card, Targetable * _target, string manaDesc, int who) :
|
AARemoveMana::AARemoveMana(GameObserver* observer, int _id, MTGCardInstance * card, Targetable * _target, string manaDesc, int who) :
|
||||||
ActivatedAbilityTP(observer, _id, card, _target, NULL, who)
|
ActivatedAbilityTP(observer, _id, card, _target, NULL, who)
|
||||||
|
|||||||
@@ -1839,6 +1839,13 @@ void GameObserver::Mulligan(Player* player)
|
|||||||
player->takeMulligan();
|
player->takeMulligan();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void GameObserver::serumMulligan(Player* player)
|
||||||
|
{
|
||||||
|
if(!player) player = currentPlayer;
|
||||||
|
logAction(player, "mulligan serum powder");
|
||||||
|
player->serumMulligan();
|
||||||
|
}
|
||||||
|
|
||||||
Player* GameObserver::createPlayer(const string& playerMode
|
Player* GameObserver::createPlayer(const string& playerMode
|
||||||
#ifdef TESTSUITE
|
#ifdef TESTSUITE
|
||||||
, TestSuiteGame* testgame
|
, TestSuiteGame* testgame
|
||||||
|
|||||||
@@ -2532,6 +2532,16 @@ MTGAbility * AbilityFactory::parseMagicLine(string s, int id, Spell * spell, MTG
|
|||||||
return a;
|
return a;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//Serum Powder
|
||||||
|
found = s.find("serumpowder");
|
||||||
|
if (found != string::npos)
|
||||||
|
{
|
||||||
|
Targetable * t = spell? spell->getNextTarget() : NULL;
|
||||||
|
MTGAbility * a = NEW AAMulligan(observer, id, card, t, NULL, who);
|
||||||
|
a->oneShot = 1;
|
||||||
|
return a;
|
||||||
|
}
|
||||||
|
|
||||||
//Remove Mana from ManaPool
|
//Remove Mana from ManaPool
|
||||||
vector<string> splitRemove = parseBetween(s, "removemana(", ")");
|
vector<string> splitRemove = parseBetween(s, "removemana(", ")");
|
||||||
if (splitRemove.size())
|
if (splitRemove.size())
|
||||||
|
|||||||
@@ -217,6 +217,22 @@ void Player::takeMulligan()
|
|||||||
//Draw hand with 1 less card penalty //almhum
|
//Draw hand with 1 less card penalty //almhum
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Player::serumMulligan()
|
||||||
|
{
|
||||||
|
MTGPlayerCards * currentPlayerZones = game;
|
||||||
|
int cardsinhand = currentPlayerZones->hand->nb_cards;
|
||||||
|
for (int i = 0; i < cardsinhand; i++) //Exile
|
||||||
|
currentPlayerZones->putInZone(currentPlayerZones->hand->cards[0],
|
||||||
|
currentPlayerZones->hand,
|
||||||
|
currentPlayerZones->exile);
|
||||||
|
|
||||||
|
currentPlayerZones->library->shuffle(); //Shuffle
|
||||||
|
|
||||||
|
for (int i = 0; i < (cardsinhand); i++)
|
||||||
|
game->drawFromLibrary();
|
||||||
|
//Draw hand no penalty
|
||||||
|
}
|
||||||
|
|
||||||
//Cleanup phase at the end of a turn
|
//Cleanup phase at the end of a turn
|
||||||
void Player::cleanupPhase()
|
void Player::cleanupPhase()
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user