fixed most of the reviewed code, corrected all danger zone code which could have had bad side effects.
This commit is contained in:
@@ -3398,7 +3398,7 @@ public:
|
|||||||
AAMorph * clone() const;
|
AAMorph * clone() const;
|
||||||
};
|
};
|
||||||
/* dynamic ability build*/
|
/* dynamic ability build*/
|
||||||
class AADYNAMIC: public ActivatedAbility
|
class AADynamic: public ActivatedAbility
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
int type;
|
int type;
|
||||||
@@ -3415,12 +3415,12 @@ MTGAbility * storedAbility;
|
|||||||
MTGAbility * clonedStored;
|
MTGAbility * clonedStored;
|
||||||
string menu;
|
string menu;
|
||||||
|
|
||||||
AADYNAMIC(int id, MTGCardInstance * card, Damageable * _target,int type = 0,int effect = 0,int who = 0,int amountsource = 1,MTGAbility * storedAbility = NULL, ManaCost * _cost = NULL, int doTap = 0);
|
AADynamic(int id, MTGCardInstance * card, Damageable * _target,int type = 0,int effect = 0,int who = 0,int amountsource = 1,MTGAbility * storedAbility = NULL, ManaCost * _cost = NULL, int doTap = 0);
|
||||||
int resolve();
|
int resolve();
|
||||||
int activateStored();
|
int activateStored();
|
||||||
const char * getMenuText();
|
const char * getMenuText();
|
||||||
AADYNAMIC * clone() const;
|
AADynamic * clone() const;
|
||||||
~AADYNAMIC();
|
~AADynamic();
|
||||||
};
|
};
|
||||||
|
|
||||||
/* switch power and toughness of target */
|
/* switch power and toughness of target */
|
||||||
|
|||||||
@@ -151,10 +151,10 @@ AADamager::AADamager(int _id, MTGCardInstance * _source, Targetable * _target,WP
|
|||||||
|
|
||||||
int AADamager::resolve()
|
int AADamager::resolve()
|
||||||
{
|
{
|
||||||
RefreshedDamage = NEW WParsedInt(d, NULL, (MTGCardInstance *)source);
|
|
||||||
Damageable * _target = (Damageable *) getTarget();
|
Damageable * _target = (Damageable *) getTarget();
|
||||||
if (_target)
|
if (_target)
|
||||||
{
|
{
|
||||||
|
RefreshedDamage = NEW WParsedInt(d, NULL, (MTGCardInstance *)source);
|
||||||
game->mLayers->stackLayer()->addDamage(source, _target, RefreshedDamage->getValue());
|
game->mLayers->stackLayer()->addDamage(source, _target, RefreshedDamage->getValue());
|
||||||
game->mLayers->stackLayer()->resolve();
|
game->mLayers->stackLayer()->resolve();
|
||||||
delete RefreshedDamage;
|
delete RefreshedDamage;
|
||||||
@@ -190,11 +190,11 @@ RefreshedNbcards = NULL;
|
|||||||
int AADepleter::resolve()
|
int AADepleter::resolve()
|
||||||
{
|
{
|
||||||
|
|
||||||
RefreshedNbcards = NEW WParsedInt(nbcardsStr, NULL, source);
|
|
||||||
Targetable * _target = getTarget();
|
Targetable * _target = getTarget();
|
||||||
Player * player;
|
Player * player;
|
||||||
if (_target)
|
if (_target)
|
||||||
{
|
{
|
||||||
|
RefreshedNbcards = NEW WParsedInt(nbcardsStr, NULL, source);
|
||||||
if (_target->typeAsTarget() == TARGET_CARD)
|
if (_target->typeAsTarget() == TARGET_CARD)
|
||||||
{
|
{
|
||||||
player = ((MTGCardInstance *) _target)->controller();
|
player = ((MTGCardInstance *) _target)->controller();
|
||||||
@@ -209,8 +209,8 @@ RefreshedNbcards = NULL;
|
|||||||
if (library->nb_cards)
|
if (library->nb_cards)
|
||||||
player->game->putInZone(library->cards[library->nb_cards - 1], library, player->game->graveyard);
|
player->game->putInZone(library->cards[library->nb_cards - 1], library, player->game->graveyard);
|
||||||
}
|
}
|
||||||
|
delete RefreshedNbcards;
|
||||||
}
|
}
|
||||||
delete RefreshedNbcards;
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -657,11 +657,11 @@ AADrawer::AADrawer(int _id, MTGCardInstance * card, Targetable * _target, ManaCo
|
|||||||
|
|
||||||
int AADrawer::resolve()
|
int AADrawer::resolve()
|
||||||
{
|
{
|
||||||
RefreshedNbcards = NEW WParsedInt(nbcardsStr, NULL, source);
|
|
||||||
Targetable * _target = getTarget();
|
Targetable * _target = getTarget();
|
||||||
Player * player;
|
Player * player;
|
||||||
if (_target)
|
if (_target)
|
||||||
{
|
{
|
||||||
|
RefreshedNbcards = NEW WParsedInt(nbcardsStr, NULL, source);
|
||||||
if (_target->typeAsTarget() == TARGET_CARD)
|
if (_target->typeAsTarget() == TARGET_CARD)
|
||||||
{
|
{
|
||||||
player = ((MTGCardInstance *) _target)->controller();
|
player = ((MTGCardInstance *) _target)->controller();
|
||||||
@@ -672,8 +672,8 @@ AADrawer::AADrawer(int _id, MTGCardInstance * card, Targetable * _target, ManaCo
|
|||||||
}
|
}
|
||||||
game->mLayers->stackLayer()->addDraw(player, RefreshedNbcards->getValue());
|
game->mLayers->stackLayer()->addDraw(player, RefreshedNbcards->getValue());
|
||||||
game->mLayers->stackLayer()->resolve();
|
game->mLayers->stackLayer()->resolve();
|
||||||
|
delete RefreshedNbcards;
|
||||||
}
|
}
|
||||||
delete RefreshedNbcards;
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -845,7 +845,7 @@ AAMorph * AAMorph::clone() const
|
|||||||
return a;
|
return a;
|
||||||
}
|
}
|
||||||
// AADYNAMIC: dynamic ability builder
|
// AADYNAMIC: dynamic ability builder
|
||||||
AADYNAMIC::AADYNAMIC(int id, MTGCardInstance * card, Damageable * _target,int type,int effect,int who,int amountsource,MTGAbility * storedAbility, ManaCost * _cost, int doTap) :
|
AADynamic::AADynamic(int id, MTGCardInstance * card, Damageable * _target,int type,int effect,int who,int amountsource,MTGAbility * storedAbility, ManaCost * _cost, int doTap) :
|
||||||
ActivatedAbility(id, card, _cost, 0, doTap),type(type),effect(effect),who(who),amountsource(amountsource),eachother(eachother),storedAbility(storedAbility)
|
ActivatedAbility(id, card, _cost, 0, doTap),type(type),effect(effect),who(who),amountsource(amountsource),eachother(eachother),storedAbility(storedAbility)
|
||||||
{
|
{
|
||||||
target = _target;
|
target = _target;
|
||||||
@@ -859,7 +859,7 @@ ActivatedAbility(id, card, _cost, 0, doTap),type(type),effect(effect),who(who),a
|
|||||||
clonedStored = NULL;
|
clonedStored = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
int AADYNAMIC::resolve()
|
int AADynamic::resolve()
|
||||||
{
|
{
|
||||||
Damageable * _target = (Damageable *) target;
|
Damageable * _target = (Damageable *) target;
|
||||||
Damageable * secondaryTarget = NULL;
|
Damageable * secondaryTarget = NULL;
|
||||||
@@ -1144,7 +1144,7 @@ int AADYNAMIC::resolve()
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int AADYNAMIC::activateStored()
|
int AADynamic::activateStored()
|
||||||
{
|
{
|
||||||
clonedStored = storedAbility->clone();
|
clonedStored = storedAbility->clone();
|
||||||
clonedStored->target = target;
|
clonedStored->target = target;
|
||||||
@@ -1160,7 +1160,7 @@ int AADYNAMIC::activateStored()
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
const char * AADYNAMIC::getMenuText()
|
const char * AADynamic::getMenuText()
|
||||||
{
|
{
|
||||||
if (menu.size())
|
if (menu.size())
|
||||||
{
|
{
|
||||||
@@ -1233,14 +1233,14 @@ const char * AADYNAMIC::getMenuText()
|
|||||||
return menuText;
|
return menuText;
|
||||||
}
|
}
|
||||||
|
|
||||||
AADYNAMIC * AADYNAMIC::clone() const
|
AADynamic * AADynamic::clone() const
|
||||||
{
|
{
|
||||||
AADYNAMIC * a = NEW AADYNAMIC(*this);
|
AADynamic * a = NEW AADynamic(*this);
|
||||||
a->isClone = 1;
|
a->isClone = 1;
|
||||||
return a;
|
return a;
|
||||||
}
|
}
|
||||||
|
|
||||||
AADYNAMIC::~AADYNAMIC()
|
AADynamic::~AADynamic()
|
||||||
{
|
{
|
||||||
if (!isClone)
|
if (!isClone)
|
||||||
SAFE_DELETE(storedAbility);
|
SAFE_DELETE(storedAbility);
|
||||||
@@ -1294,7 +1294,6 @@ AALifer * AALifer::clone() const
|
|||||||
|
|
||||||
AALifer::~AALifer()
|
AALifer::~AALifer()
|
||||||
{
|
{
|
||||||
if(life)
|
|
||||||
SAFE_DELETE(life);
|
SAFE_DELETE(life);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1319,15 +1318,14 @@ int AALifeSet::resolve()
|
|||||||
WEvent * lifed = NULL;
|
WEvent * lifed = NULL;
|
||||||
if(lifeDiff < 0)
|
if(lifeDiff < 0)
|
||||||
{
|
{
|
||||||
_target->thatmuch = abs(lifeDiff);
|
|
||||||
_target->lifeLostThisTurn += abs(lifeDiff);
|
_target->lifeLostThisTurn += abs(lifeDiff);
|
||||||
lifed = NEW WEventLife((Player*)_target,lifeDiff,1);
|
lifed = NEW WEventLife((Player*)_target,lifeDiff,1);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
_target->thatmuch = abs(lifeDiff);
|
|
||||||
lifed = NEW WEventLife((Player*)_target,lifeDiff,0);
|
lifed = NEW WEventLife((Player*)_target,lifeDiff,0);
|
||||||
}
|
}
|
||||||
|
_target->thatmuch = abs(lifeDiff);
|
||||||
GameObserver * game = GameObserver::GetInstance();
|
GameObserver * game = GameObserver::GetInstance();
|
||||||
game->receiveEvent(lifed);
|
game->receiveEvent(lifed);
|
||||||
_target->life = life->getValue();
|
_target->life = life->getValue();
|
||||||
@@ -1692,6 +1690,7 @@ AARandomDiscarder * AARandomDiscarder::clone() const
|
|||||||
{
|
{
|
||||||
AARandomDiscarder * a = NEW AARandomDiscarder(*this);
|
AARandomDiscarder * a = NEW AARandomDiscarder(*this);
|
||||||
a->isClone = 1;
|
a->isClone = 1;
|
||||||
|
a->nbcards = NEW WParsedInt(nbcardsStr, NULL, source);
|
||||||
return a;
|
return a;
|
||||||
}
|
}
|
||||||
AARandomDiscarder ::~AARandomDiscarder ()
|
AARandomDiscarder ::~AARandomDiscarder ()
|
||||||
@@ -2408,7 +2407,7 @@ int AForeverTransformer::addToGame()
|
|||||||
}
|
}
|
||||||
for (it = types.begin(); it != types.end(); it++)
|
for (it = types.begin(); it != types.end(); it++)
|
||||||
{
|
{
|
||||||
if(remove == true)
|
if(remove)
|
||||||
{
|
{
|
||||||
_target->removeType(0,1);
|
_target->removeType(0,1);
|
||||||
_target->removeType(1,1);
|
_target->removeType(1,1);
|
||||||
@@ -3015,6 +3014,8 @@ void ABlink::Update(float dt)
|
|||||||
this->forceDestroy = 1;
|
this->forceDestroy = 1;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
if(!tc->validTargetsExist())
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
spell->source->power = spell->source->origpower;
|
spell->source->power = spell->source->origpower;
|
||||||
@@ -3076,7 +3077,6 @@ void ABlink::resolveBlink()
|
|||||||
spell->source->target = inplay->cards[i];
|
spell->source->target = inplay->cards[i];
|
||||||
spell->getNextCardTarget();
|
spell->getNextCardTarget();
|
||||||
spell->resolve();
|
spell->resolve();
|
||||||
|
|
||||||
delete spell;
|
delete spell;
|
||||||
delete tc;
|
delete tc;
|
||||||
this->forceDestroy = 1;
|
this->forceDestroy = 1;
|
||||||
@@ -3087,6 +3087,7 @@ void ABlink::resolveBlink()
|
|||||||
spell->source->power = spell->source->origpower;
|
spell->source->power = spell->source->origpower;
|
||||||
spell->source->toughness = spell->source->origtoughness;
|
spell->source->toughness = spell->source->origtoughness;
|
||||||
spell->resolve();
|
spell->resolve();
|
||||||
|
delete tc;
|
||||||
delete spell;
|
delete spell;
|
||||||
this->forceDestroy = 1;
|
this->forceDestroy = 1;
|
||||||
Blinked = NULL;
|
Blinked = NULL;
|
||||||
|
|||||||
@@ -1472,7 +1472,7 @@ MTGAbility * AbilityFactory::parseMagicLine(string s, int id, Spell * spell, MTG
|
|||||||
{
|
{
|
||||||
stored = parseMagicLine(sAbility, id, spell, card);
|
stored = parseMagicLine(sAbility, id, spell, card);
|
||||||
}
|
}
|
||||||
MTGAbility * a = NEW AADYNAMIC(id, card, target,type,effect,who,amountsource,stored);
|
MTGAbility * a = NEW AADynamic(id, card, target,type,effect,who,amountsource,stored);
|
||||||
a->oneShot = 1;
|
a->oneShot = 1;
|
||||||
return a;
|
return a;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user