Change [advance] modifications to [advancement]
This change maintains backwards compatibility - [advance] will still work if present - attempts to add [advance] via Lua will instead add [advancement].
This commit is contained in:
parent
d13d249ca9
commit
7a5ba33f5a
4 changed files with 17 additions and 7 deletions
|
@ -1538,7 +1538,7 @@ unit_ptr get_amla_unit(const unit &u, const config &mod_option)
|
|||
{
|
||||
unit_ptr amla_unit(new unit(u));
|
||||
amla_unit->set_experience(amla_unit->experience() - amla_unit->max_experience());
|
||||
amla_unit->add_modification("advance", mod_option);
|
||||
amla_unit->add_modification("advancement", mod_option);
|
||||
return amla_unit;
|
||||
}
|
||||
|
||||
|
|
|
@ -257,7 +257,7 @@ void helper_advance_unit(const map_location& loc){
|
|||
}else{
|
||||
const config &mod_option = mod_options[advance_choice-options.size()];
|
||||
advanced_unit.set_experience(advanced_unit.experience()-advanced_unit.max_experience());
|
||||
advanced_unit.add_modification("advance", mod_option);
|
||||
advanced_unit.add_modification("advancement", mod_option);
|
||||
}
|
||||
|
||||
resources::units->replace(loc, advanced_unit);
|
||||
|
|
|
@ -3276,8 +3276,12 @@ static int intf_add_modification(lua_State *L)
|
|||
unit_ptr u = luaW_checkunit(L, 1);
|
||||
char const *m = luaL_checkstring(L, 2);
|
||||
std::string sm = m;
|
||||
if (sm != "advance" && sm != "object" && sm != "trait")
|
||||
if (sm == "advance") { // Maintain backwards compatibility
|
||||
sm = "advancement";
|
||||
}
|
||||
if (sm != "advancement" && sm != "object" && sm != "trait") {
|
||||
return luaL_argerror(L, 2, "unknown modification type");
|
||||
}
|
||||
|
||||
config cfg = luaW_checkconfig(L, 3);
|
||||
u->add_modification(sm, cfg);
|
||||
|
|
14
src/unit.cpp
14
src/unit.cpp
|
@ -88,7 +88,8 @@ static lg::log_domain log_enginerefac("enginerefac");
|
|||
#define LOG_RG LOG_STREAM(info, log_enginerefac)
|
||||
|
||||
namespace {
|
||||
const std::string ModificationTypes[] = { "advance", "trait", "object" };
|
||||
// "advance" only kept around for backwards compatibility; only "advancement" should be used
|
||||
const std::string ModificationTypes[] = { "advancement", "advance", "trait", "object" };
|
||||
const size_t NumModificationTypes = sizeof(ModificationTypes)/
|
||||
sizeof(*ModificationTypes);
|
||||
|
||||
|
@ -1558,7 +1559,7 @@ std::vector<std::pair<std::string,std::string> > unit::amla_icons() const
|
|||
icon.first = adv["icon"].str();
|
||||
icon.second = adv["description"].str();
|
||||
|
||||
for (unsigned j = 0, j_count = modification_count("advance", adv["id"]);
|
||||
for (unsigned j = 0, j_count = modification_count("advancement", adv["id"]);
|
||||
j < j_count; ++j)
|
||||
{
|
||||
temp.push_back(icon);
|
||||
|
@ -1574,7 +1575,7 @@ std::vector<config> unit::get_modification_advances() const
|
|||
{
|
||||
if (adv["strict_amla"].to_bool() && !advances_to_.empty())
|
||||
continue;
|
||||
if (modification_count("advance", adv["id"]) >= unsigned(adv["max_times"].to_int(1)))
|
||||
if (modification_count("advancement", adv["id"]) >= unsigned(adv["max_times"].to_int(1)))
|
||||
continue;
|
||||
|
||||
std::vector<std::string> temp = utils::split(adv["require_amla"]);
|
||||
|
@ -1591,7 +1592,7 @@ std::vector<config> unit::get_modification_advances() const
|
|||
BOOST_FOREACH(const std::string &s, uniq)
|
||||
{
|
||||
int required_num = std::count(temp.begin(), temp.end(), s);
|
||||
int mod_num = modification_count("advance", s);
|
||||
int mod_num = modification_count("advancement", s);
|
||||
if (required_num > mod_num) {
|
||||
requirements_done = false;
|
||||
break;
|
||||
|
@ -1621,6 +1622,11 @@ size_t unit::modification_count(const std::string& mod_type, const std::string&
|
|||
++res;
|
||||
}
|
||||
}
|
||||
|
||||
// For backwards compatibility, if asked for "advancement", also count "advance"
|
||||
if (mod_type == "advancement") {
|
||||
res += modification_count("advance", id);
|
||||
}
|
||||
|
||||
return res;
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue