1
0
mirror of https://github.com/vcmi/vcmi.git synced 2024-12-24 22:14:36 +02:00

Added string identifiers to artifacts.

Some of them have lost some abilities, needs more work.
This commit is contained in:
DjWarmonger 2012-12-25 17:23:26 +00:00
parent 96cc88ba91
commit 743a0fc3f4
3 changed files with 175 additions and 11 deletions

File diff suppressed because it is too large Load Diff

View File

@ -749,20 +749,22 @@ void CArtHandler::makeItCommanderArt( TArtifactInstanceID aid, bool onlyCommande
void CArtHandler::addBonuses()
{
const JsonNode config(ResourceID("config/artifacts.json"));
BOOST_FOREACH(const JsonNode &artifact, config["artifacts"].Vector())
BOOST_FOREACH (auto & artifact, config["artifacts"].Struct()) //pair <string, JsonNode> (id, properties)
{
auto ga = artifacts[artifact["id"].Float()].get();
auto ga = artifacts[artifact.second["id"].Float()].get();
BOOST_FOREACH (auto b, artifact["bonuses"].Vector())
BOOST_FOREACH (auto b, artifact.second["bonuses"].Vector())
{
auto bonus = JsonUtils::parseBonus (b);
bonus->sid = ga->id;
ga->addNewBonus (bonus);
}
if(artifact["type"].String() == "Creature")
if(artifact.second["type"].String() == "Creature")
makeItCreatureArt(ga->id);
else if(artifact["type"].String() == "Commander")
else if(artifact.second["type"].String() == "Commander")
makeItCommanderArt(ga->id);
VLC->modh->identifiers.registerObject ("artifact." + artifact.first, ga->id);
}
}

View File

@ -905,7 +905,7 @@ const std::string & CGHeroInstance::getBiography() const
return biography;
return type->biography;
}
void CGHeroInstance::initObj()
void CGHeroInstance::initObj() //TODO: use bonus system
{
blockVisit = true;
speciality.growthsWithLevel = false;
@ -929,7 +929,7 @@ void CGHeroInstance::initObj()
const CCreature &specCreature = *VLC->creh->creatures[it->additionalinfo]; //creature in which we have specialty
int creLevel = specCreature.level;
if(!creLevel) //TODO: set fixed level for War Machines
if(!creLevel)
{
if(it->additionalinfo == 146)
creLevel = 5; //treat ballista as 5-level
@ -1094,7 +1094,7 @@ void CGHeroInstance::initObj()
mana = manaLimit(); //after all bonuses are taken into account, make sure this line is the last one
type->name = name;
}
void CGHeroInstance::UpdateSpeciality()
void CGHeroInstance::UpdateSpeciality() //TODO: calculate special value of bonuses on-the-fly?
{
if (speciality.growthsWithLevel)
{