- Magic 2010: Combat Damages don't go on the stack anymore
- Comp rules: "goes to graveyard" effects don't go on the stack anymore
- Regenerate "fixed" (untested)
- Basic "ReplacementEffect" mechanism for damage prevention. Can be extended to other replacement effects with some limits.
- TODO: Damages don't go on the stack, the abilities that create them do.
This commit is contained in:
wagic.the.homebrew@gmail.com
2009-06-23 14:22:00 +00:00
parent 5dc98359c1
commit ca3c2d30ab
17 changed files with 266 additions and 64 deletions

View File

@@ -101,6 +101,7 @@ void MTGCardInstance::initMTGCI(){
previous = NULL;
next = NULL;
lastController = NULL;
regenerateTokens = 0;
}
@@ -128,13 +129,20 @@ int MTGCardInstance::afterDamage(){
doDamageTest = 0;
if (!isACreature()) return 0;
if (life <=0 && isInPlay()){
GameObserver * game = GameObserver::GetInstance();
game->mLayers->stackLayer()->addPutInGraveyard(this);
return 1;
return destroy();
}
return 0;
}
int MTGCardInstance::bury(){
Player * p = controller();
p->game->putInZone(this,p->game->inPlay,owner->game->graveyard);
return 1;
}
int MTGCardInstance::destroy(){
if (!triggerRegenerate()) return bury();
return 0;
}
MTGGameZone * MTGCardInstance::getCurrentZone(){
GameObserver * game = GameObserver::GetInstance();
@@ -194,10 +202,17 @@ void MTGCardInstance::resetAllDamage(){
nb_damages = 0;
}
void MTGCardInstance::regenerate(){
int MTGCardInstance::regenerate(){
return ++regenerateTokens;
}
int MTGCardInstance::triggerRegenerate(){
if (! regenerateTokens) return 0;
regenerateTokens--;
tapped = 1;
life = toughness;
initAttackersDefensers();
return 1;
}
@@ -217,6 +232,7 @@ int MTGCardInstance::cleanup(){
if (previous && !previous->stillInUse()){
SAFE_DELETE(previous);
}
regenerateTokens = 0;
return 1;
}