- Bug fixes for Kird ape(RV), Dingus Egg(RV), Ankh of Mishra(RV), Ancient Tomb(TMP), Wooded Bastion (SHM)
- Added tests in the test suite to confirm/infirm  some bug reports
This commit is contained in:
wagic.the.homebrew
2009-02-15 05:32:12 +00:00
parent 6d1d5d751a
commit f7a887db2a
14 changed files with 221 additions and 115 deletions

View File

@@ -1217,23 +1217,31 @@ class AAladdinsLamp: public TargetAbility{
//Ankh of Mishra
class AAnkhOfMishra: public MTGAbility{
class AAnkhOfMishra: public ListMaintainerAbility{
public:
int playerLands[2];
AAnkhOfMishra(int id, MTGCardInstance * _source):MTGAbility(id, _source){
for (int i=0; i< 2; i++){
playerLands[i] = GameObserver::GetInstance()->players[i]->game->inPlay->countByType("land");
}
int init;
AAnkhOfMishra(int id, MTGCardInstance * _source):ListMaintainerAbility(id, _source){
init = 0;
}
void Update(float dt){
for (int i=0; i < 2; i++){
int lands = GameObserver::GetInstance()->players[i]->game->inPlay->countByType("land");
while (lands > playerLands[i]){
GameObserver::GetInstance()->mLayers->stackLayer()->addDamage(source,GameObserver::GetInstance()->players[i], 2);
playerLands[i]++;
}
}
ListMaintainerAbility::Update(dt);
init = 1;
}
int canBeInList(MTGCardInstance * card){
if (card->hasType("land")) return 1;
return 0;
}
int added(MTGCardInstance * card){
if (!init) return 0;
game->mLayers->stackLayer()->addDamage(source,card->controller(), 2);
return 1;
}
int removed(MTGCardInstance * card){
return 1;
}
};
@@ -1472,23 +1480,23 @@ class ACreatureBond:public TriggeredAbility{
};
//1105: Dingus Egg
class ADingusEgg: public MTGAbility{
class ADingusEgg: public ListMaintainerAbility{
public:
int playerLands[2];
ADingusEgg(int id, MTGCardInstance * _source):MTGAbility(id, _source){
for (int i=0; i< 2; i++){
playerLands[i] = GameObserver::GetInstance()->players[i]->game->inPlay->countByType("land");
}
ADingusEgg(int id, MTGCardInstance * _source):ListMaintainerAbility(id, _source){
}
void Update(float dt){
for (int i=0; i < 2; i++){
int lands = GameObserver::GetInstance()->players[i]->game->inPlay->countByType("land");
while (lands < playerLands[i]){
GameObserver::GetInstance()->mLayers->stackLayer()->addDamage(source,GameObserver::GetInstance()->players[i], 2);
playerLands[i]--;
}
}
int canBeInList(MTGCardInstance * card){
if (card->hasType("land")) return 1;
return 0;
}
int added(MTGCardInstance * card){
return 1;
}
int removed(MTGCardInstance * card){
game->mLayers->stackLayer()->addDamage(source,card->controller(), 2);
return 1;
}
};
@@ -1908,15 +1916,6 @@ class AKudzu: public TargetAbility{
return 0;
}
/*
int reactToClick(MTGCardInstance * card){
if (!waitingForAnswer) {
}else{
tc->toggleTarget(card);
}
return 1;
}
*/
int resolve(){
target = tc->getNextCardTarget();
@@ -2423,30 +2422,7 @@ class AKeldonWarlord:public ListMaintainerAbility{
};
//1302 : Kird Ape
class AKirdApe:public MTGAbility{
public:
int init;
AKirdApe(int _id, MTGCardInstance * _source):MTGAbility(_id, _source){
init = 0;
}
void Update(float dt){
if (source->controller()->game->inPlay->hasType("forest")){
if(!init){
init = 1;
source->power+=1;
source->addToToughness(2);
}
}else{
if (init){
init = 0;
source->power-=1;
source->addToToughness(-2);
}
}
}
};
//1309 Orcish Artilery
class AOrcishArtillery: public ADamager{
@@ -2589,30 +2565,6 @@ class ANorthernPaladin:public TargetAbility{
};
//Sedge Troll
class ASedgeTroll:public MTGAbility{
public:
int init;
ASedgeTroll(int _id, MTGCardInstance * _source):MTGAbility(_id, _source){
init = 0;
}
void Update(float dt){
if (source->controller()->game->inPlay->hasType("swamp")){
if(!init){
init = 1;
source->power+=1;
source->addToToughness(1);
}
}else{
if (init){
init = 0;
source->power-=1;
source->addToToughness(-1);
}
}
}
};
//Soul Net
class ASoulNet:public ActivatedAbility{
@@ -2883,33 +2835,45 @@ class ACreaturePowerToughnessModifierForAllTypeControlled:public ListMaintainerA
};
//GenericKirdApe
//Erwan 2008/11/15 : this cannot work as type is never initialized...
class AGenericKirdApe:public MTGAbility{
//Generic Kird Ape
class AKirdApe:public ListMaintainerAbility{
public:
int init;
char type [20];
TargetChooser * tc;
int power;
int toughness;
AGenericKirdApe(int _id, MTGCardInstance * _source, const char * _type, int _power, int _toughness):MTGAbility(_id, _source){
init = 0;
}
AKirdApe(int _id, MTGCardInstance * _source, TargetChooser * _tc, int _power, int _toughness):ListMaintainerAbility(_id, _source){
power = _power;
toughness = _toughness;
tc = _tc;
}
int canBeInList(MTGCardInstance * card){
if (card->controller() == source->controller() && tc->canTarget(card)) return 1;
return 0;
}
int added(MTGCardInstance * card){
if (cards.size()== 1){
source->power+=power;
source->addToToughness(toughness);
return 1;
}
return 0;
}
int removed(MTGCardInstance * card){
if (cards.size()== 0){
source->power-=power;
source->addToToughness(-toughness);
return 1;
}
return 0;
}
~AKirdApe(){
delete tc;
}
void Update(float dt){
if (source->controller()->game->inPlay->hasType(type)){
if(!init){
init = 1;
source->power+=power;
source->addToToughness(toughness);
}
}else{
if (init){
init = 0;
source->power-=power;
source->addToToughness(-toughness);
}
}
}
};

View File

@@ -39,6 +39,7 @@ class MTGCardInstance: public MTGCard, public Damageable, public Targetable {
public:
bool isToken;
MTGGameZone * getCurrentZone();
MTGGameZone * previousZone;
int doDamageTest;
int summoningSickness;
// The recommended method to test for summoning Sickness !

View File

@@ -53,7 +53,7 @@ class TestSuite{
TestSuiteState initState;
TestSuiteState endState;
TestSuiteActions actions;
string files[128];
string files[1024];
int nbfiles;
int currentfile;
void load(const char * filename);