made it so undead units have a dummy 'undead' trait...

...with a description of the effects of being race undead
This commit is contained in:
Dave White 2005-03-11 02:40:00 +00:00
parent edaaa27a57
commit bb9731185a
5 changed files with 27 additions and 3 deletions

View file

@ -481,7 +481,9 @@
[race]
name=undead
not_living=yes
num_traits=0
num_traits=1
ignore_global_traits=yes
{TRAIT_UNDEAD}
[/race]
[race]
name=ogre

View file

@ -2,12 +2,21 @@
[trait]
id=loyal
name= _ "loyal"
description= _ "Zero upkeep"
[effect]
apply_to=loyal
[/effect]
[/trait]
#enddef
#define TRAIT_UNDEAD
[trait]
id=undead
name= _ "undead"
description= _ "Immune to poison"
[/trait]
#enddef
#define TRAIT_STRONG
[trait]
id=strong

View file

@ -95,12 +95,13 @@ wide_string markov_generate_name(const markov_prefix_map& prefixes, size_t chain
}
unit_race::unit_race() : ntraits_(0), chain_size_(0), not_living_(false), traits_(&empty_traits)
unit_race::unit_race() : ntraits_(0), chain_size_(0), not_living_(false), traits_(&empty_traits), global_traits_(true)
{
}
unit_race::unit_race(const config& cfg) : name_(cfg["name"]), ntraits_(atoi(cfg["num_traits"].c_str())),
not_living_(cfg["not_living"] == "yes"), traits_(&cfg.get_children("trait"))
not_living_(cfg["not_living"] == "yes"),
traits_(&cfg.get_children("trait")), global_traits_(cfg["ignore_global_traits"] != "yes")
{
names_[MALE] = utils::split(cfg["male_names"]);
names_[FEMALE] = utils::split(cfg["female_names"]);
@ -120,6 +121,11 @@ std::string unit_race::generate_name(unit_race::GENDER gender) const
return utils::wstring_to_string(markov_generate_name(next_[gender],chain_size_,12));
}
bool unit_race::uses_global_traits() const
{
return global_traits_;
}
const config::child_list& unit_race::additional_traits() const
{
return *traits_;

View file

@ -22,6 +22,8 @@ public:
std::string generate_name(GENDER gender) const;
bool uses_global_traits() const;
const config::child_list& additional_traits() const;
int num_traits() const;
@ -37,6 +39,7 @@ private:
bool not_living_;
const config::child_list* traits_;
bool global_traits_;
};
typedef std::map<std::string,unit_race> race_map;

View file

@ -581,6 +581,10 @@ unit_type::unit_type(const config& cfg, const movement_type_map& mv_types,
if(race_it != races.end()) {
race_ = &race_it->second;
if(race_ != NULL) {
if(race_->uses_global_traits() == false) {
possibleTraits_.clear();
}
const config::child_list& traits = race_->additional_traits();
possibleTraits_.insert(possibleTraits_.end(),traits.begin(),traits.end());
}