- AI:increased percentage of chance to play an "unknown" Card
- removed delay before displaying big card ingame
- added 2 new AI Decks 
- Fixed a bug with afflict (see tests/afflict.txt)
This commit is contained in:
wagic.the.homebrew
2008-12-01 12:10:55 +00:00
parent 179b7deeb8
commit d66ef78d12
11 changed files with 194 additions and 14 deletions
+67
View File
@@ -0,0 +1,67 @@
#Blue Deck, with Persusasion
#28 Islands
176428
176428
176428
176428
176428
176428
176428
158237
158237
158237
158237
158237
158237
158237
157875
157875
157875
157875
157875
157875
157875
157883
157883
157883
157883
157883
157883
157883
#4persusasion
129900
129900
129900
129900
#4Boomerang
129494
129494
129494
129494
#2Lord of Atlantis
1206
1206
#2Merfolk
1210
1210
#4Gravelgill
141935
141935
141935
141935
#4Unsummon
136218
136218
136218
136218
#4Counsel of the Soratami
134757
134757
134757
134757
#2Air Elemental
129459
129459
#2 Mahamoti djinn
129633
129633
+69
View File
@@ -0,0 +1,69 @@
#Black Deck, Rats
#26 Swamps
157886
157886
157886
157886
157886
157871
157871
157871
157871
157871
157871
157871
158239
158239
158239
158239
158239
158239
158239
157889
157889
157889
157889
157889
157889
157889
#4plague rats
1173
1173
1173
1173
#4plague beetle
129678
129678
129678
129678
#12 relentless rats
135236
135236
135236
135236
135236
135236
135236
135236
135236
135236
135236
135236
#4Oona's Gatewarden
141975
141975
141975
141975
#4Fear
129544
129544
129544
129544
#Ascendant Evincar
106525
106525
#4rain of tears
135220
135220
135220
135220
+1 -1
View File
@@ -1204,7 +1204,7 @@ subtype=Aura
[card] [card]
text=Relentless Rats gets +1/+1 for each other creature in play named Relentless Rats. A deck can have any number of cards named Relentless Rats. text=Relentless Rats gets +1/+1 for each other creature in play named Relentless Rats. A deck can have any number of cards named Relentless Rats.
id=135236 id=135236
auto=champion(name:Relentless Rats) auto=foreach(name:Relentless Rats)
name=Relentless Rats name=Relentless Rats
rarity=U rarity=U
color=Black color=Black
+1 -1
View File
@@ -1581,7 +1581,7 @@ subtype=Plains Mountain
text=Plague Rats's power and toughness are each equal to the number of creatures named Plague Rats in play. text=Plague Rats's power and toughness are each equal to the number of creatures named Plague Rats in play.
id=1173 id=1173
name=Plague Rats name=Plague Rats
auto=champion(name:Plague Rats) auto=foreach(name:Plague Rats)
rarity=C rarity=C
color=Black color=Black
type=Creature type=Creature
+1
View File
@@ -11,6 +11,7 @@ generic/wither.txt
######################## ########################
#Specific Cards #Specific Cards
######################## ########################
afflict.txt
anarchy.txt anarchy.txt
animate_dead.txt animate_dead.txt
animate_dead2.txt animate_dead2.txt
+37
View File
@@ -0,0 +1,37 @@
#Make sure afflict does -1/-1 and makes you draw a card
[INIT]
FIRSTMAIN
[PLAYER1]
hand:135206
inplay:2455
library:129580
manapool:{B}{2}
[PLAYER2]
inplay:129586
[DO]
135206
129586
next
#combat begin
next
#attackers
2455
next
#blockers
129586
next
#damage
next
#combat end
[ASSERT]
COMBATEND
[PLAYER1]
hand:129580
graveyard:135206
inplay:2455
manapool:{0}
life:20
[PLAYER2]
graveyard:129586
life:20
[END]
+3 -3
View File
@@ -229,11 +229,11 @@ int AIPlayer::chooseAttackers(){
int opponentCreatures = getCreaturesInfo(opponent(), INFO_NBCREATURES); int opponentCreatures = getCreaturesInfo(opponent(), INFO_NBCREATURES);
int myForce = getCreaturesInfo(this,INFO_CREATURESPOWER,-1,1); int myForce = getCreaturesInfo(this,INFO_CREATURESPOWER,-1,1);
int myCreatures = getCreaturesInfo(this, INFO_NBCREATURES, -1,1); int myCreatures = getCreaturesInfo(this, INFO_NBCREATURES, -1,1);
bool attack = (myCreatures > opponentCreatures || myForce > opponentForce || myForce > 2*opponent()->life); bool attack = ((myCreatures > opponentCreatures) || (myForce > opponentForce) || (myForce > 2*opponent()->life));
if (attack){ if (attack){
CardDescriptor cd; CardDescriptor cd;
cd.init(); cd.init();
cd.setType("Creature"); cd.setType("creature");
MTGCardInstance * card = NULL; MTGCardInstance * card = NULL;
while((card = cd.nextmatch(game->inPlay, card))){ while((card = cd.nextmatch(game->inPlay, card))){
GameObserver::GetInstance()->cardClick(card); GameObserver::GetInstance()->cardClick(card);
@@ -433,7 +433,7 @@ MTGCardInstance * AIPlayerBaka::FindCardToPlay(ManaCost * potentialMana, const c
if (shouldPlay == BAKA_EFFECT_GOOD){ if (shouldPlay == BAKA_EFFECT_GOOD){
shouldPlayPercentage = 90; shouldPlayPercentage = 90;
}else if(BAKA_EFFECT_DONTKNOW == shouldPlay){ }else if(BAKA_EFFECT_DONTKNOW == shouldPlay){
shouldPlayPercentage = 70; shouldPlayPercentage = 80;
} }
if (rand() % 100 > shouldPlayPercentage) continue; if (rand() % 100 > shouldPlayPercentage) continue;
} }
+6 -1
View File
@@ -84,7 +84,12 @@ void DeckStats::save(const char * filename){
void DeckStats::saveStats(Player *player, Player *opponent, GameObserver * game){ void DeckStats::saveStats(Player *player, Player *opponent, GameObserver * game){
int victory = 1; int victory = 1;
if (game->gameOver == player) victory = 0; if (!game->gameOver){
if (player->life == opponent->life) return;
if (player->life < opponent->life) victory = 0;
}else if (game->gameOver == player) {
victory = 0;
}
load(player); load(player);
map<string,DeckStat *>::iterator it = stats.find(opponent->deckFile); map<string,DeckStat *>::iterator it = stats.find(opponent->deckFile);
if (it == stats.end()){ if (it == stats.end()){
+6 -5
View File
@@ -154,13 +154,13 @@ int AbilityFactory::magicText(int id, Spell * spell, MTGCardInstance * card){
} }
} }
//Champion. Very basic, needs to be improved ! //foreach. Very basic, needs to be improved !
found = s.find("champion(name:"); found = s.find("foreach(name:");
if (found != string::npos){ if (found != string::npos){
if (dryMode) return BAKA_EFFECT_GOOD; if (dryMode) return BAKA_EFFECT_GOOD;
unsigned int end = s.find(")", found+14); unsigned int end = s.find(")", found+13);
if (end != string::npos){ if (end != string::npos){
string type = s.substr(found+14,end-found-14).c_str(); string type = s.substr(found+13,end-found-13).c_str();
game->addObserver(NEW APlagueRats(id,card,type.c_str())); game->addObserver(NEW APlagueRats(id,card,type.c_str()));
result++; result++;
continue; continue;
@@ -365,7 +365,8 @@ int AbilityFactory::magicText(int id, Spell * spell, MTGCardInstance * card){
found = s.find("/"); found = s.find("/");
if (found != string::npos){ if (found != string::npos){
unsigned int start = s.find(":"); unsigned int start = s.find(":");
if (start == string::npos) start = found-2; if (start == string::npos) start = s.find(" ");
if (start == string::npos) start = -1;
int power = atoi(s.substr(start+1,size-found).c_str()); int power = atoi(s.substr(start+1,size-found).c_str());
unsigned int end = s.find(" ",start); unsigned int end = s.find(" ",start);
int toughness; int toughness;
+2 -2
View File
@@ -234,13 +234,13 @@ int MTGAllCards::readConfLine(std::ifstream &file, int set_id){
if (s[s.size()-1] == '\r') s.erase(s.size()-1); //Handle DOS files if (s[s.size()-1] == '\r') s.erase(s.size()-1); //Handle DOS files
switch(conf_read_mode) { switch(conf_read_mode) {
case 0: case 0:
if (s.find("[card]") != string::npos){ if (s[0] == '['){
collection[total_cards] = NEW MTGCard(mCache,set_id); collection[total_cards] = NEW MTGCard(mCache,set_id);
conf_read_mode = 1; conf_read_mode = 1;
} }
break; break;
case 1: case 1:
if (s.find("[/card]") != string::npos){ if (s[0] == '[' && s[1] == '/'){
conf_read_mode = 0; conf_read_mode = 0;
total_cards++; total_cards++;
}else{ }else{
+1 -1
View File
@@ -358,7 +358,7 @@ void MTGGuiPlay::Render(){
if (mCount && mObjects[mCurr] != NULL){ if (mCount && mObjects[mCurr] != NULL){
mObjects[mCurr]->Render(); mObjects[mCurr]->Render();
if (hasFocus && mCurr >= offset && showBigCards && last_user_move > BIG_CARD_RENDER_TIME){ if (hasFocus && mCurr >= offset && showBigCards){
((CardGui *)mObjects[mCurr])->RenderBig(-1,-1,showBigCards-1); ((CardGui *)mObjects[mCurr])->RenderBig(-1,-1,showBigCards-1);
} }
} }