From dcbdac8ab5d593d31faa04f6069da8ae5c6744c5 Mon Sep 17 00:00:00 2001 From: josteph Date: Thu, 28 Jun 2018 09:22:42 +0000 Subject: [PATCH] Help: only use male_name/female_name if the unit has male/female variants. --- src/help/topic_text_generators.cpp | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/src/help/topic_text_generators.cpp b/src/help/topic_text_generators.cpp index 42486c3b9b6f..c5343836de92 100644 --- a/src/help/topic_text_generators.cpp +++ b/src/help/topic_text_generators.cpp @@ -462,10 +462,17 @@ std::string unit_topic_generator::generate() const int must_have_nameless_traits = 0; for(const config& trait : traits) { - std::string trait_name = trait["male_name"].str(); - if (trait_name.empty()) trait_name = trait["female_name"].str(); - if (trait_name.empty()) trait_name = trait["name"].str(); - if (trait_name.empty()) continue; // Hidden trait + const std::string& male_name = trait["male_name"].str(); + const std::string& female_name = trait["female_name"].str(); + std::string trait_name; + if (type_.has_gender_variation(unit_race::MALE) && ! male_name.empty()) + trait_name = male_name; + else if (type_.has_gender_variation(unit_race::FEMALE) && ! female_name.empty()) + trait_name = female_name; + else if (! trait["name"].str().empty()) + trait_name = trait["name"].str(); + else + continue; // Hidden trait std::string lang_trait_name = translation::gettext(trait_name.c_str()); if(lang_trait_name.empty() && trait["availability"].str() == "musthave") {