taught ai if the effect of a ability$! spell is good or bad.

This commit is contained in:
omegablast2002@yahoo.com
2012-04-06 11:01:48 +00:00
parent a514bf6ba0
commit e4d6f83191

View File

@@ -2972,6 +2972,56 @@ int AbilityFactory::abilityEfficiency(MTGAbility * a, Player * p, int mode, Targ
return abilityEfficiency(abi->ability, p, mode, tc);
if (ATeach * abi = dynamic_cast<ATeach *>(a))
return abilityEfficiency(abi->ability, p, mode, tc);
if (ATargetedAbilityCreator * atac = dynamic_cast<ATargetedAbilityCreator *>(a))
{
Player * targetedPlyr;
switch(atac->who)
{
case TargetChooser::CONTROLLER:
targetedPlyr = atac->source->controller();
break;
case TargetChooser::OPPONENT:
targetedPlyr = atac->source->controller()->opponent();
break;
case TargetChooser::TARGET_CONTROLLER:
if(dynamic_cast<MTGCardInstance*>(target))
{
targetedPlyr = ((MTGCardInstance*)atac->target)->controller();
break;
}
case TargetChooser::TARGETED_PLAYER:
{
targetedPlyr = atac->source->playerTarget?atac->source->playerTarget:p;
break;
}
default:
targetedPlyr = atac->source->controller()->opponent();
break;
}
int result = 0;
if(targetedPlyr)
{
MTGCardInstance * testDummy = NEW MTGCardInstance();
testDummy->setObserver(targetedPlyr->getObserver());
testDummy->owner = targetedPlyr;
testDummy->storedCard = atac->source;
vector<string>magictextlines = split(atac->sabilities,'_');
if(magictextlines.size())
{
for(unsigned int i = 0; i < magictextlines.size(); i++)
{
MTGAbility * ata = parseMagicLine(magictextlines[i],-1,NULL,testDummy);
if(ata)
{
result += abilityEfficiency(getCoreAbility(ata), targetedPlyr,mode);
SAFE_DELETE(ata);
}
}
}
SAFE_DELETE(testDummy);
}
return result;
}
if (dynamic_cast<AAFizzler *> (a))
return BAKA_EFFECT_BAD;
if (dynamic_cast<AADamagePrevent *> (a))