Erwan
-fix a crash when the AI tries to use a spell with X in the manacost
This commit is contained in:
20
projects/mtg/bin/Res/test/manual/howl_from_beyond_ai.txt
Normal file
20
projects/mtg/bin/Res/test/manual/howl_from_beyond_ai.txt
Normal 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]
|
||||
19
projects/mtg/bin/Res/test/manual/serpent_assassin_ai.txt
Normal file
19
projects/mtg/bin/Res/test/manual/serpent_assassin_ai.txt
Normal 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]
|
||||
@@ -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();
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user