revised "steal" ability

steal - gain control of target/s until it leaves battlefield or  its
current controller loses control of the "stealer"...
This commit is contained in:
Anthony Calosa
2016-09-06 15:47:09 +08:00
parent d2183f3b91
commit 7f8339aedf
13 changed files with 223 additions and 101 deletions

View File

@@ -232,15 +232,6 @@ power=2
toughness=2
[/card]
[card]
name=Orcish Squatters
text=Whenever Orcish Squatters attacks and isn't blocked, you may gain control of target land defending player controls for as long as you control Orcish Squatters. If you do, Orcish Squatters assigns no combat damage this turn.
mana={4}{R}
type=Creature
subtype=Orc
power=2
toughness=3
[/card]
[card]
name=Pentagram of the Ages
text={4}, {T}: The next time a source of your choice would deal damage to you this turn, prevent that damage.
mana={4}

View File

@@ -44,15 +44,6 @@ power=8
toughness=8
[/card]
[card]
name=Dragonlord Silumgar
text=Flying, deathtouch -- When Dragonlord Silumgar enters the battlefield, gain control of target creature or planeswalker for as long as you control Dragonlord Silumgar.
mana={4}{U}{B}
type=Legendary Creature
subtype=Elder Dragon
power=3
toughness=5
[/card]
[card]
name=Dragonlord's Prerogative
text=As an additional cost to cast Dragonlord's Prerogative, you may reveal a Dragon card from your hand. -- If you revealed a Dragon card or controlled a Dragon as you cast Dragonlord's Prerogative, Dragonlord's Prerogative can't be countered. -- Draw four cards.
mana={4}{U}{U}

View File

@@ -81,15 +81,6 @@ mana={B}{B}
type=Sorcery
[/card]
[card]
name=Thrull Champion
text=Thrull creatures get +1/+1. -- {T}: Gain control of target Thrull for as long as you control Thrull Champion.
mana={4}{B}
type=Creature
subtype=Thrull
power=2
toughness=2
[/card]
[card]
name=Tidal Flats
text={U}{U}: For each attacking creature without flying, its controller may pay {1}. If he or she doesn't, creatures you control blocking that creature gain first strike until end of turn.
mana={U}

View File

@@ -491,15 +491,6 @@ power=2
toughness=2
[/card]
[card]
name=Orcish Squatters
text=Whenever Orcish Squatters attacks and isn't blocked, you may gain control of target land defending player controls for as long as you control Orcish Squatters. If you do, Orcish Squatters assigns no combat damage this turn.
mana={4}{R}
type=Creature
subtype=Orc
power=2
toughness=3
[/card]
[card]
name=Pentagram of the Ages
text={4}, {T}: The next time a source of your choice would deal damage to you this turn, prevent that damage.
mana={4}

View File

@@ -68,15 +68,6 @@ power=6
toughness=6
[/card]
[card]
name=Master Thief
text=When Master Thief enters the battlefield, gain control of target artifact for as long as you control Master Thief.
mana={2}{U}{U}
type=Creature
subtype=Human Rogue
power=2
toughness=2
[/card]
[card]
name=Monomania
text=Target player chooses a card in his or her hand and discards the rest.
mana={3}{B}{B}

View File

@@ -124,15 +124,6 @@ mana={R}
type=Enchantment
[/card]
[card]
name=Roil Elemental
text=Flying -- Landfall — Whenever a land enters the battlefield under your control, you may gain control of target creature for as long as you control Roil Elemental.
mana={3}{U}{U}{U}
type=Creature
subtype=Elemental
power=3
toughness=2
[/card]
[card]
name=Sorin Markov
text=+2: Sorin Markov deals 2 damage to target creature or player and you gain 2 life. -- -3: Target opponent's life total becomes 10. -- -7: You control target player during that player's next turn.
mana={3}{B}{B}{B}

View File

@@ -29970,6 +29970,17 @@ power=5
toughness=4
[/card]
[card]
name=Dragonlord Silumgar
abilities=flying,deathtouch
auto=steal target(*[creature;planeswalker])
text=Flying, deathtouch -- When Dragonlord Silumgar enters the battlefield, gain control of target creature or planeswalker for as long as you control Dragonlord Silumgar.
mana={4}{U}{B}
type=Legendary Creature
subtype=Elder Dragon
power=3
toughness=5
[/card]
[card]
name=Dragonlord's Servant
auto=lord(dragon|mycastingzone) altercost(colorless, -1)
text=Dragon spells you cast cost {1} less to cast.
@@ -69088,6 +69099,16 @@ mana={3}{U}{R}
type=Sorcery
[/card]
[card]
name=Master Thief
auto=steal target(artifact)
text=When Master Thief enters the battlefield, gain control of target artifact for as long as you control Master Thief.
mana={2}{U}{U}
type=Creature
subtype=Human Rogue
power=2
toughness=2
[/card]
[card]
name=Master Transmuter
auto={H(artifact|mybattlefield)}{U}{T}:name(put artifact in play) transforms((,newability[ability$! moveTo(mybattlefield) notatarget(artifact|myhand) !$ controller])) oneshot
text={U}, {T}, Return an artifact you control to its owner's hand: You may put an artifact card from your hand onto the battlefield.
@@ -78857,7 +78878,7 @@ toughness=3
name=Olivia Voldaren
abilities=flying
auto={1}{R}:all(this) counter(1/1,1) && target(other creature) damage:1 && transforms((vampire)) forever
auto={3}{B}{B}:target(vampire) moveTo(mybattlefield) && transforms((,newability[@movedTo(Olivia Voldaren|nonbattlezone) from(battlefield):moveTo(ownerbattlefield)])) forever
auto={3}{B}{B}:target(vampire) steal
text=Flying -- {1}{R}: Olivia Voldaren deals 1 damage to another target creature. That creature becomes a Vampire in addition to its other types. Put a +1/+1 counter on Olivia Voldaren. -- {3}{B}{B}: Gain control of target Vampire for as long as you control Olivia Voldaren.
mana={2}{B}{R}
type=Legendary Creature
@@ -79739,6 +79760,16 @@ power=1
toughness=1
[/card]
[card]
name=Orcish Squatters
auto=@combat(notblocked) source(this):may steal target(land|opponentbattlefield) && fog from(this) ueot
text=Whenever Orcish Squatters attacks and isn't blocked, you may gain control of target land defending player controls for as long as you control Orcish Squatters. If you do, Orcish Squatters assigns no combat damage this turn.
mana={4}{R}
type=Creature
subtype=Orc
power=2
toughness=3
[/card]
[card]
name=Orcish Veteran
auto=cantbeblockerof(creature[white;power>=2])
auto={R}:first strike
@@ -92514,6 +92545,17 @@ power=5
toughness=5
[/card]
[card]
name=Roil Elemental
abilities=flying
auto=@movedTo(land|myBattlefield):may steal target(creature)
text=Flying -- Landfall — Whenever a land enters the battlefield under your control, you may gain control of target creature for as long as you control Roil Elemental.
mana={3}{U}{U}{U}
type=Creature
subtype=Elemental
power=3
toughness=2
[/card]
[card]
name=Roil Spout
target=creature|battlefield
auto=moveto(ownerlibrary)
@@ -116332,6 +116374,17 @@ mana={4}{B}
type=Instant
[/card]
[card]
name=Thrull Champion
auto=lord(creature[thrull]) 1/1
auto={T}:steal target(thrull)
text=Thrull creatures get +1/+1. -- {T}: Gain control of target Thrull for as long as you control Thrull Champion.
mana={4}{B}
type=Creature
subtype=Thrull
power=2
toughness=2
[/card]
[card]
name=Thrull Retainer
target=creature
auto=1/1

View File

@@ -4041,15 +4041,6 @@ power=8
toughness=8
[/card]
[card]
name=Dragonlord Silumgar
text=Flying, deathtouch -- When Dragonlord Silumgar enters the battlefield, gain control of target creature or planeswalker for as long as you control Dragonlord Silumgar.
mana={4}{U}{B}
type=Legendary Creature
subtype=Elder Dragon
power=3
toughness=5
[/card]
[card]
name=Dragonlord's Prerogative
text=As an additional cost to cast Dragonlord's Prerogative, you may reveal a Dragon card from your hand. -- If you revealed a Dragon card or controlled a Dragon as you cast Dragonlord's Prerogative, Dragonlord's Prerogative can't be countered. -- Draw four cards.
mana={4}{U}{U}
@@ -9463,15 +9454,6 @@ power=3
toughness=3
[/card]
[card]
name=Master Thief
text=When Master Thief enters the battlefield, gain control of target artifact for as long as you control Master Thief.
mana={2}{U}{U}
type=Creature
subtype=Human Rogue
power=2
toughness=2
[/card]
[card]
name=Master Warcraft
text=Cast Master Warcraft only before attackers are declared. -- You choose which creatures attack this turn. -- You choose which creatures block this turn and how those creatures block.
mana={2}{RW}{RW}
@@ -11062,15 +11044,6 @@ type=Enchantment
subtype=Aura
[/card]
[card]
name=Orcish Squatters
text=Whenever Orcish Squatters attacks and isn't blocked, you may gain control of target land defending player controls for as long as you control Orcish Squatters. If you do, Orcish Squatters assigns no combat damage this turn.
mana={4}{R}
type=Creature
subtype=Orc
power=2
toughness=3
[/card]
[card]
name=Ordeal of Erebos
text=Enchant creature -- Whenever enchanted creature attacks, put a +1/+1 counter on it. Then if it has three or more +1/+1 counters on it, sacrifice Ordeal of Erebos. -- When you sacrifice Ordeal of Erebos, target player discards two cards.
mana={1}{B}
@@ -13202,15 +13175,6 @@ mana={G}
type=Sorcery
[/card]
[card]
name=Roil Elemental
text=Flying -- Landfall — Whenever a land enters the battlefield under your control, you may gain control of target creature for as long as you control Roil Elemental.
mana={3}{U}{U}{U}
type=Creature
subtype=Elemental
power=3
toughness=2
[/card]
[card]
name=Roiling Waters
text=Return up to two target creatures your opponents control to their owners' hands. Target player draws two cards.
mana={5}{U}{U}
@@ -16498,15 +16462,6 @@ type=Artifact
subtype=Equipment
[/card]
[card]
name=Thrull Champion
text=Thrull creatures get +1/+1. -- {T}: Gain control of target Thrull for as long as you control Thrull Champion.
mana={4}{B}
type=Creature
subtype=Thrull
power=2
toughness=2
[/card]
[card]
name=Thrull Parasite
text=Extort (Whenever you cast a spell, you may pay {WB}. If you do, each opponent loses 1 life and you gain that much life.) -- {T}, Pay 2 life: Remove a counter from target nonland permanent.
mana={B}

View File

@@ -5386,6 +5386,38 @@ public:
ABlockSetCost * clone() const;
};
//ASeize
class ASeize: public MTGAbility
{
public:
MTGCardInstance * Seized;
Player * previousController;
bool resolved;
ASeize(GameObserver* observer, int _id, MTGCardInstance * card, MTGCardInstance * _target);
void Update(float dt);
void resolveSeize();
int resolve();
int receiveEvent(WEvent * event);
const string getMenuText();
ASeize * clone() const;
~ASeize();
private:
void returntoOwner(MTGCardInstance *_target);
};
//SeizeWrapper
class ASeizeWrapper: public InstantAbility
{
public:
ASeize * ability;
ASeizeWrapper(GameObserver* observer, int _id, MTGCardInstance * card, MTGCardInstance * _target);
int resolve();
const string getMenuText();
ASeizeWrapper * clone() const;
~ASeizeWrapper();
};
//AShackle
class AShackle: public MTGAbility
{
@@ -5416,6 +5448,7 @@ public:
~AShackleWrapper();
};
//Grant
class AGrant : public MTGAbility
{
@@ -5448,6 +5481,7 @@ public:
~AGrantWrapper();
};
//ABlink
class ABlink: public MTGAbility
{

View File

@@ -174,6 +174,7 @@ public:
MTGCardInstance * createSnapShot();
MTGCardInstance * storedSourceCard;
MTGCardInstance * shackled;
MTGCardInstance * seized;
MTGCardInstance * isDefenser();
int initAttackersDefensers();
MTGCardInstance * getNextOpponent(MTGCardInstance * previous=NULL);

View File

@@ -6913,6 +6913,137 @@ ABlockSetCost * ABlockSetCost::clone() const
return NEW ABlockSetCost(*this);
}
//ASeize
ASeize::ASeize(GameObserver* observer, int _id, MTGCardInstance * card, MTGCardInstance * _target) :
MTGAbility(observer, _id, card)
{
target = _target;
Seized = NULL;
previousController = NULL;
resolved = false;
}
void ASeize::Update(float dt)
{
if (resolved == false)
{
resolved = true;
resolveSeize();
}
if (!source->isInPlay(game))
{
if (Seized == NULL || !Seized->isInPlay(game))
MTGAbility::Update(dt);
MTGCardInstance * _target = Seized;
returntoOwner(_target);
}
MTGAbility::Update(dt);
}
void ASeize::resolveSeize()
{
MTGCardInstance * _target = (MTGCardInstance *) target;
if (_target)
{
previousController = _target->controller();
previousController->game->putInZone(_target, _target->currentZone,
source->controller()->game->inPlay);
Seized = _target;
source->seized = Seized;
Seized->seized = source;
}
}
void ASeize::returntoOwner(MTGCardInstance* _target) {
MTGCardInstance * cardToReturn = _target;
if(!cardToReturn)
{
if (source)
source->seized = NULL;
this->forceDestroy = 1;
return;
}
if(previousController && cardToReturn->isInPlay(game))
{
cardToReturn->seized = NULL;
cardToReturn->controller()->game->putInZone(_target, _target->currentZone,
previousController->game->inPlay);
}
if (source)
source->seized = NULL;
this->forceDestroy = 1;
Seized = NULL;
return;
}
int ASeize::resolve()
{
return 0;
}
int ASeize::receiveEvent(WEvent * event)
{
WEventCardControllerChange * enters = dynamic_cast<WEventCardControllerChange *> (event);
if (enters && source)
{
if(enters->card == source)
{
if(Seized && Seized->controller() != enters->card->controller())
returntoOwner(Seized);
return 1;
}
}
return 0;
}
const string ASeize::getMenuText()
{
return "Gain Control";
}
ASeize * ASeize::clone() const
{
ASeize * a = NEW ASeize(*this);
a->forceDestroy = -1;
return a;
};
ASeize::~ASeize()
{
}
ASeizeWrapper::ASeizeWrapper(GameObserver* observer, int _id, MTGCardInstance * card, MTGCardInstance * _target) :
InstantAbility(observer, _id, source, _target)
{
ability = NEW ASeize(observer, _id,card,_target);
}
int ASeizeWrapper::resolve()
{
ASeize * a = ability->clone();
a->target = target;
a->addToGame();
return 1;
}
const string ASeizeWrapper::getMenuText()
{
return "Gain Control";
}
ASeizeWrapper * ASeizeWrapper::clone() const
{
ASeizeWrapper * a = NEW ASeizeWrapper(*this);
a->ability = this->ability->clone();
a->oneShot = 1;
return a;
}
ASeizeWrapper::~ASeizeWrapper()
{
SAFE_DELETE(ability);
}
//AShackle
AShackle::AShackle(GameObserver* observer, int _id, MTGCardInstance * card, MTGCardInstance * _target) :
MTGAbility(observer, _id, card)

View File

@@ -3903,10 +3903,11 @@ MTGAbility * AbilityFactory::parseMagicLine(string s, int id, Spell * spell, MTG
return a;
}
//steal target until source leaves battlefield
found = s.find("steal");
if (found != string::npos)
{
MTGAbility * a = NEW AInstantControlSteal(observer, id, card, target);
MTGAbility * a = NEW ASeizeWrapper(observer, id, card, target);
a->oneShot = 1;
return a;
}

View File

@@ -237,6 +237,7 @@ void MTGCardInstance::initMTGCI()
storedSourceCard = NULL;
myPair = NULL;
shackled = NULL;
seized = NULL;
miracle = false;
hasCopiedToken = false;
countTrini = 0;