mirror of
https://github.com/vcmi/vcmi.git
synced 2025-08-13 19:54:17 +02:00
Nullkiller: improve artifact value evaluation
This commit is contained in:
committed by
Andrii Danylchenko
parent
642f3a3fa4
commit
6faac5aeca
@@ -119,6 +119,41 @@ uint64_t getDwellingScore(const CGObjectInstance * target, bool checkGold)
|
|||||||
return score;
|
return score;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
uint64_t evaluateArtifactArmyValue(CArtifactInstance * art)
|
||||||
|
{
|
||||||
|
if(art->artType->id == ArtifactID::SPELL_SCROLL)
|
||||||
|
return 1500;
|
||||||
|
|
||||||
|
auto statsValue =
|
||||||
|
4 * art->valOfBonuses(Bonus::LAND_MOVEMENT)
|
||||||
|
+ 700 * art->valOfBonuses(Bonus::MORALE)
|
||||||
|
+ 700 * art->getAttack(false)
|
||||||
|
+ 700 * art->getDefence(false)
|
||||||
|
+ 700 * art->valOfBonuses(Bonus::PRIMARY_SKILL, PrimarySkill::KNOWLEDGE)
|
||||||
|
+ 700 * art->valOfBonuses(Bonus::PRIMARY_SKILL, PrimarySkill::SPELL_POWER)
|
||||||
|
+ 700 * art->getDefence(false)
|
||||||
|
+ 500 * art->valOfBonuses(Bonus::LUCK);
|
||||||
|
|
||||||
|
auto classValue = 0;
|
||||||
|
|
||||||
|
switch(art->artType->aClass)
|
||||||
|
{
|
||||||
|
case CArtifact::EartClass::ART_MINOR:
|
||||||
|
classValue = 1000;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case CArtifact::EartClass::ART_MAJOR:
|
||||||
|
classValue = 3000;
|
||||||
|
break;
|
||||||
|
case CArtifact::EartClass::ART_RELIC:
|
||||||
|
case CArtifact::EartClass::ART_SPECIAL:
|
||||||
|
classValue = 8000;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return statsValue > classValue ? statsValue : classValue;
|
||||||
|
}
|
||||||
|
|
||||||
uint64_t getArmyReward(const CGObjectInstance * target, const CGHeroInstance * hero, bool checkGold)
|
uint64_t getArmyReward(const CGObjectInstance * target, const CGHeroInstance * hero, bool checkGold)
|
||||||
{
|
{
|
||||||
if(!target)
|
if(!target)
|
||||||
@@ -138,9 +173,10 @@ uint64_t getArmyReward(const CGObjectInstance * target, const CGHeroInstance * h
|
|||||||
case Obj::CRYPT:
|
case Obj::CRYPT:
|
||||||
case Obj::SHIPWRECK:
|
case Obj::SHIPWRECK:
|
||||||
case Obj::SHIPWRECK_SURVIVOR:
|
case Obj::SHIPWRECK_SURVIVOR:
|
||||||
|
case Obj::WARRIORS_TOMB:
|
||||||
return 1500;
|
return 1500;
|
||||||
case Obj::ARTIFACT:
|
case Obj::ARTIFACT:
|
||||||
return dynamic_cast<const CGArtifact *>(target)->storedArtifact-> artType->getArtClassSerial() * 300;
|
return evaluateArtifactArmyValue(dynamic_cast<const CGArtifact *>(target)->storedArtifact);
|
||||||
case Obj::DRAGON_UTOPIA:
|
case Obj::DRAGON_UTOPIA:
|
||||||
return 10000;
|
return 10000;
|
||||||
default:
|
default:
|
||||||
@@ -220,6 +256,8 @@ int32_t getGoldReward(const CGObjectInstance * target, const CGHeroInstance * he
|
|||||||
return 100;
|
return 100;
|
||||||
case Obj::CAMPFIRE:
|
case Obj::CAMPFIRE:
|
||||||
return 800;
|
return 800;
|
||||||
|
case Obj::WAGON:
|
||||||
|
return 100;
|
||||||
case Obj::CREATURE_BANK:
|
case Obj::CREATURE_BANK:
|
||||||
return getCreatureBankResources(target, hero)[Res::GOLD];
|
return getCreatureBankResources(target, hero)[Res::GOLD];
|
||||||
case Obj::CRYPT:
|
case Obj::CRYPT:
|
||||||
|
@@ -603,7 +603,7 @@ void VCAI::init(std::shared_ptr<CCallback> CB)
|
|||||||
if(!fh)
|
if(!fh)
|
||||||
fh = new FuzzyHelper();
|
fh = new FuzzyHelper();
|
||||||
|
|
||||||
if(playerID.getStr(false) == "red")
|
//if(playerID.getStr(false) == "blue")
|
||||||
{
|
{
|
||||||
nullkiller.reset(new Nullkiller());
|
nullkiller.reset(new Nullkiller());
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user