-fix a crash when the AI tries to use a spell with X in the manacost
This commit is contained in:
wagic.the.homebrew@gmail.com
2009-09-28 14:12:50 +00:00
parent f7331b7066
commit d9464f53c2
6 changed files with 51 additions and 8 deletions

View File

@@ -0,0 +1,20 @@
#Bug:Does ai correctly cast Howl From Beyond on its creatures ?
[INIT]
SECONDMAIN
[PLAYER1]
inplay:grizzly bears,raging goblin,goblin king
[PLAYER2]
hand:howl from beyond
inplay:air elemental,swamp,plains,swamp,mountain,forest
[DO]
ai
ai
[ASSERT]
COMBATEND
[PLAYER1]
inplay:Wildslayer Elves,Armadillo Cloak
life:25
[PLAYER2]
graveyard:grizzly bears
life:17
[END]

View File

@@ -0,0 +1,19 @@
#Bug:Does ai correctly cast Serpent Assassin on opponent's creatures ?
[INIT]
SECONDMAIN
[PLAYER1]
[PLAYER2]
hand:serpent assassin
inplay:air elemental,swamp,plains,swamp,mountain,forest,raging goblin,goblin king
[DO]
ai
ai
[ASSERT]
COMBATEND
[PLAYER1]
inplay:Wildslayer Elves,Armadillo Cloak
life:25
[PLAYER2]
graveyard:grizzly bears
life:17
[END]

View File

@@ -80,6 +80,7 @@ class Spell: public Interruptible {
TargetChooser * tc;
ManaCost * cost;
int payResult;
int computeX(MTGCardInstance * card);
Spell(MTGCardInstance* _source);
Spell(int id, MTGCardInstance* _source, TargetChooser *_tc, ManaCost * _cost, int payResult);
~Spell();

View File

@@ -30,10 +30,8 @@ public:
int intValue;
int computeX(Spell * spell, MTGCardInstance * card){
ManaCost * c = spell->cost->Diff(card->getManaCost());
int x = c->getCost(Constants::MTG_NB_COLORS);
delete c;
return x;
if (spell) return spell->computeX(card);
return 1; //this should only hapen when the ai calls the ability. This is to give it an idea of the "direction" of X (positive/negative)
}
WParsedInt(int value = 0){
intValue = value;

View File

@@ -121,6 +121,13 @@ Spell::Spell(int id, MTGCardInstance * _source, TargetChooser * tc, ManaCost * _
from = _source->getCurrentZone();
}
int Spell::computeX(MTGCardInstance * card){
ManaCost * c = cost->Diff(card->getManaCost());
int x = c->getCost(Constants::MTG_NB_COLORS);
delete c;
return x;
}
bool Spell::kickerWasPaid(){
return (payResult == ManaCost::MANA_PAID_WITH_KICKER);
}

View File

@@ -699,10 +699,8 @@ int AbilityFactory::abilityEfficiency(MTGAbility * a, Player * p, int mode){
//Returns the "X" cost that was paid for a spell
int AbilityFactory::computeX(Spell * spell, MTGCardInstance * card){
ManaCost * c = spell->cost->Diff(card->getManaCost());
int x = c->getCost(Constants::MTG_NB_COLORS);
delete c;
return x;
if (spell) return spell->computeX(card);
return 0;
}
//Some basic functionalities that can be added automatically in the text file