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:
@@ -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());
|
||||||
|
Reference in New Issue
Block a user