1
0
mirror of https://github.com/vcmi/vcmi.git synced 2025-08-13 19:54:17 +02:00

Fix duplication in zcrtraits load

This commit is contained in:
alexvins
2013-03-14 11:39:29 +00:00
parent 5082dafd62
commit 9e7fe4d011

View File

@@ -295,52 +295,10 @@ void CCreatureHandler::load()
parser.readNumber(); parser.readNumber();
ncre.ammMin = parser.readNumber(); ncre.ammMin = parser.readNumber();
ncre.ammMax = parser.readNumber(); ncre.ammMax = parser.readNumber();
ncre.abilityText = parser.readString();
loadBonuses(ncre, parser.readString()); //Attributes
std::string abilities = parser.readString();
loadBonuses(ncre, parser.readString());
{ //adding abilities from ZCRTRAIT.TXT
static const std::map < std::string,Bonus::BonusType> abilityMap = boost::assign::map_list_of
("FLYING_ARMY", Bonus::FLYING)
("SHOOTING_ARMY", Bonus::SHOOTER)
("SIEGE_WEAPON", Bonus::SIEGE_WEAPON)
("const_free_attack", Bonus::BLOCKS_RETALIATION)
("IS_UNDEAD", Bonus::UNDEAD)
("const_no_melee_penalty",Bonus::NO_MELEE_PENALTY)
("const_jousting",Bonus::JOUSTING)
("KING_1",Bonus::KING1)
("KING_2",Bonus::KING2)
("KING_3",Bonus::KING3)
("const_no_wall_penalty",Bonus::NO_WALL_PENALTY)
("CATAPULT",Bonus::CATAPULT)
("MULTI_HEADED",Bonus::ATTACKS_ALL_ADJACENT)
("IMMUNE_TO_MIND_SPELLS",Bonus::MIND_IMMUNITY)
("IMMUNE_TO_FIRE_SPELLS",Bonus::FIRE_IMMUNITY)
("IMMUNE_TO_FIRE_SPELLS",Bonus::FIRE_IMMUNITY)
("HAS_EXTENDED_ATTACK",Bonus::TWO_HEX_ATTACK_BREATH);
auto hasAbility = [&](const std::string name) -> bool
{
return boost::algorithm::find_first(abilities, name);
};
BOOST_FOREACH(auto a, abilityMap)
{
if(hasAbility(a.first))
ncre.addBonus(0, a.second);
}
if(hasAbility("DOUBLE_WIDE"))
ncre.doubleWide = true;
if(hasAbility("const_raises_morale"))
{
ncre.addBonus(+1, Bonus::MORALE);;
ncre.getBonusList().back()->addPropagator(make_shared<CPropagatorNodeType>(CBonusSystemNode::HERO));
}
if(hasAbility("const_lowers_morale"))
{
ncre.addBonus(-1, Bonus::MORALE);;
ncre.getBonusList().back()->effectRange = Bonus::ONLY_ENEMY_ARMY;
}
}
creatures.push_back(&ncre); creatures.push_back(&ncre);
} }
while (parser.endLine()); while (parser.endLine());