Update attack_type.cpp
This commit is contained in:
parent
6ff07f563b
commit
08b3ccb9b5
1 changed files with 60 additions and 0 deletions
|
@ -162,6 +162,8 @@ bool matches_simple_filter(const attack_type& attack, const config& filter, cons
|
|||
}
|
||||
|
||||
const std::set<std::string> filter_range = utils::split_set(filter["range"].str());
|
||||
const std::string& filter_min_range = filter["min_range"];
|
||||
const std::string& filter_max_range = filter["min_range"];
|
||||
const std::string& filter_damage = filter["damage"];
|
||||
const std::string& filter_attacks = filter["number"];
|
||||
const std::string& filter_accuracy = filter["accuracy"];
|
||||
|
@ -178,6 +180,12 @@ bool matches_simple_filter(const attack_type& attack, const config& filter, cons
|
|||
const std::vector<std::string> filter_special_type_active = utils::split(filter["special_type_active"]);
|
||||
const std::string filter_formula = filter["formula"];
|
||||
|
||||
if (!filter_min_range.empty() && !in_ranges(attack.min_range(), utils::parse_ranges_int(filter_min_range)))
|
||||
return false;
|
||||
|
||||
if (!filter_max_range.empty() && !in_ranges(attack.max_range(), utils::parse_ranges_int(filter_max_range)))
|
||||
return false;
|
||||
|
||||
if ( !filter_range.empty() && filter_range.count(attack.range()) == 0 )
|
||||
return false;
|
||||
|
||||
|
@ -362,6 +370,10 @@ bool attack_type::apply_modification(const config& cfg)
|
|||
const std::string& set_icon = cfg["set_icon"];
|
||||
const std::string& del_specials = cfg["remove_specials"];
|
||||
auto set_specials = cfg.optional_child("set_specials");
|
||||
const std::string& increase_min_range = cfg["increase_min_range"];
|
||||
const std::string& set_min_range = cfg["set_min_range"];
|
||||
const std::string& increase_max_range = cfg["increase_max_range"];
|
||||
const std::string& set_max_range = cfg["set_max_range"];
|
||||
const std::string& increase_damage = cfg["increase_damage"];
|
||||
const std::string& set_damage = cfg["set_damage"];
|
||||
const std::string& increase_attacks = cfg["increase_attacks"];
|
||||
|
@ -427,6 +439,22 @@ bool attack_type::apply_modification(const config& cfg)
|
|||
}
|
||||
}
|
||||
|
||||
if(set_min_range.empty() == false) {
|
||||
min_range_ = std::stoi(set_min_range);
|
||||
}
|
||||
|
||||
if(increase_min_range.empty() == false) {
|
||||
min_range_ = utils::apply_modifier(min_range_, increase_min_range);
|
||||
}
|
||||
|
||||
if(set_max_range.empty() == false) {
|
||||
max_range_ = std::stoi(set_max_range);
|
||||
}
|
||||
|
||||
if(increase_max_range.empty() == false) {
|
||||
max_range_ = utils::apply_modifier(max_range_, increase_max_range);
|
||||
}
|
||||
|
||||
if(set_damage.empty() == false) {
|
||||
damage_ = std::stoi(set_damage);
|
||||
if (damage_ < 0) {
|
||||
|
@ -514,6 +542,10 @@ bool attack_type::describe_modification(const config& cfg,std::string* descripti
|
|||
|
||||
// Did the caller want the description?
|
||||
if(description != nullptr) {
|
||||
const std::string& increase_min_range = cfg["increase_min_range"];
|
||||
const std::string& set_min_range = cfg["set_min_range"];
|
||||
const std::string& increase_max_range = cfg["increase_max_range"];
|
||||
const std::string& set_max_range = cfg["set_max_range"];
|
||||
const std::string& increase_damage = cfg["increase_damage"];
|
||||
const std::string& set_damage = cfg["set_damage"];
|
||||
const std::string& increase_attacks = cfg["increase_attacks"];
|
||||
|
@ -529,6 +561,34 @@ bool attack_type::describe_modification(const config& cfg,std::string* descripti
|
|||
|
||||
std::vector<t_string> desc;
|
||||
|
||||
if(!set_min_range.empty()) {
|
||||
desc.emplace_back(VGETTEXT(
|
||||
// TRANSLATORS: Current value for WML code set_min_range, documented in https://wiki.wesnoth.org/EffectWML
|
||||
"$number min range",
|
||||
{{"number", set_min_range}}));
|
||||
}
|
||||
|
||||
if(!increase_min_range.empty()) {
|
||||
desc.emplace_back(VGETTEXT(
|
||||
// TRANSLATORS: Current value for WML code increase_min_range, documented in https://wiki.wesnoth.org/EffectWML
|
||||
"<span color=\"$color\">$number_or_percent</span> min range",
|
||||
{{"number_or_percent", utils::print_modifier(increase_min_range)}, {"color", increase_min_range[0] == '-' ? "#f00" : "#0f0"}}));
|
||||
}
|
||||
|
||||
if(!set_max_range.empty()) {
|
||||
desc.emplace_back(VGETTEXT(
|
||||
// TRANSLATORS: Current value for WML code set_max_range, documented in https://wiki.wesnoth.org/EffectWML
|
||||
"$number max range",
|
||||
{{"number", set_max_range}}));
|
||||
}
|
||||
|
||||
if(!increase_max_range.empty()) {
|
||||
desc.emplace_back(VGETTEXT(
|
||||
// TRANSLATORS: Current value for WML code increase_max_range, documented in https://wiki.wesnoth.org/EffectWML
|
||||
"<span color=\"$color\">$number_or_percent</span> max_range",
|
||||
{{"number_or_percent", utils::print_modifier(increase_max_range)}, {"color", increase_max_range[0] == '-' ? "#f00" : "#0f0"}}));
|
||||
}
|
||||
|
||||
if(!increase_damage.empty()) {
|
||||
desc.emplace_back(VNGETTEXT(
|
||||
// TRANSLATORS: Current value for WML code increase_damage, documented in https://wiki.wesnoth.org/EffectWML
|
||||
|
|
Loading…
Add table
Reference in a new issue