1
0
mirror of https://github.com/vcmi/vcmi.git synced 2025-07-03 00:46:55 +02:00

[programming challenge] Improved spell handling.

This commit is contained in:
Michał W. Urbańczyk
2011-12-11 01:51:59 +00:00
parent 67571d5823
commit 2a18d2efcc
9 changed files with 95 additions and 11 deletions

View File

@ -976,6 +976,17 @@ void CGameState::init( StartInfo * si, ui32 checksum, int Seed )
for(int i = 0; i < ss.heroPrimSkills.size(); i++)
h->pushPrimSkill(i, ss.heroPrimSkills[i]);
if(ss.spells.size())
{
h->putArtifact(Arts::SPELLBOOK, CArtifactInstance::createNewArtifactInstance(0));
BOOST_FOREACH(si32 spell, ss.spells)
h->spells.insert(spell);
}
typedef const std::pair<si32, si8> &TSecSKill;
BOOST_FOREACH(TSecSKill secSkill, ss.heroSecSkills)
h->setSecSkillLevel((CGHeroInstance::SecondarySkill)secSkill.first, secSkill.second, 1);
h->initHero(h->subID);
obj->initObj();
}
@ -2832,6 +2843,14 @@ DuelParameters DuelParameters::fromJSON(const std::string &fname)
BOOST_FOREACH(const JsonNode &n, n["heroPrimSkills"].Vector())
ss.heroPrimSkills.push_back(n.Float());
BOOST_FOREACH(const JsonNode &skillNode, n["heroSecSkills"].Vector())
{
std::pair<si32, si8> secSkill;
secSkill.first = skillNode.Vector()[0].Float();
secSkill.second = skillNode.Vector()[1].Float();
ss.heroSecSkills.push_back(secSkill);
}
assert(ss.heroPrimSkills.empty() || ss.heroPrimSkills.size() == PRIMARY_SKILLS);
if(ss.heroId != -1)