diff --git a/changelog b/changelog index 5b59f4f7c0c..5f029545f1a 100644 --- a/changelog +++ b/changelog @@ -58,6 +58,8 @@ Version 1.11.0-svn: * is scaled to fit at all resolutions. * Removed the scrolling feature which is no longer needed. * Map label placement tool + * Engine: + * Fixed bug #19599: Engine keeps redundant unit.ai_special_ information. * Graphics: * New graphics for the Spectre. * Language and i18n: diff --git a/data/core/about.cfg b/data/core/about.cfg index 0e8d7f015d9..684289bb91b 100644 --- a/data/core/about.cfg +++ b/data/core/about.cfg @@ -894,6 +894,9 @@ [entry] name = "Andrius Štikonas" [/entry] + [entry] + name = "Anja Keicher (ayne)" + [/entry] [entry] name = "Ben Anderman (crimson_penguin)" comment = "unit list" diff --git a/src/unit.cpp b/src/unit.cpp index ac5b072f280..177eee877f2 100644 --- a/src/unit.cpp +++ b/src/unit.cpp @@ -156,7 +156,6 @@ unit::unit(const unit& o): overlays_(o.overlays_), role_(o.role_), - ai_special_(o.ai_special_), attacks_(o.attacks_), facing_(o.facing_), @@ -236,7 +235,6 @@ unit::unit(const config &cfg, bool use_traits, game_state* state, const vconfig* state_(STATE_STANDING), overlays_(), role_(cfg["role"]), - ai_special_(cfg["ai_special"]), attacks_(), facing_(map_location::NDIRECTIONS), trait_names_(), @@ -445,7 +443,7 @@ unit::unit(const config &cfg, bool use_traits, game_state* state, const vconfig* } } if(cfg["ai_special"] == "guardian") { - set_state("guardian", true); + set_state(STATE_GUARDIAN, true); } // Remove animations from private cfg, they're not needed there now @@ -597,7 +595,6 @@ unit::unit(const unit_type *t, int side, bool real_unit, state_(STATE_STANDING), overlays_(), role_(), - ai_special_(), attacks_(), facing_(static_cast(rand()%map_location::NDIRECTIONS)), trait_names_(), @@ -1071,7 +1068,6 @@ void unit::end_turn() } void unit::new_scenario() { - ai_special_ = ""; // Set the goto-command to be going to no-where goto_ = map_location(); @@ -1101,6 +1097,7 @@ void unit::new_scenario() set_state(STATE_SLOWED, false); set_state(STATE_POISONED, false); set_state(STATE_PETRIFIED, false); + set_state(STATE_GUARDIAN, false); } void unit::heal(int amount) @@ -1172,8 +1169,7 @@ std::map unit::get_known_boolean_state_names() known_boolean_state_names_map.insert(std::make_pair("uncovered", STATE_UNCOVERED)); known_boolean_state_names_map.insert(std::make_pair("not_moved",STATE_NOT_MOVED)); known_boolean_state_names_map.insert(std::make_pair("unhealable",STATE_UNHEALABLE)); - //not sure if "guardian" is a yes/no state. - //known_boolean_state_names_map.insert(std::make_pair("guardian",STATE_GUARDIAN)); + known_boolean_state_names_map.insert(std::make_pair("guardian",STATE_GUARDIAN)); return known_boolean_state_names_map; } @@ -1419,7 +1415,7 @@ bool unit::internal_matches_filter(const vconfig& cfg, const map_location& loc, } config::attribute_value cfg_ai_special = cfg["ai_special"]; - if (!cfg_ai_special.blank() && cfg_ai_special.str() != ai_special_) { + if (!cfg_ai_special.blank() && ((cfg_ai_special.str() == "guardian" ? true : false) != get_state(STATE_GUARDIAN))) { return false; } @@ -1638,7 +1634,6 @@ void unit::write(config& cfg) const cfg["variation"] = variation_; cfg["role"] = role_; - cfg["ai_special"] = ai_special_; cfg["flying"] = flying_; config status_flags; diff --git a/src/unit.hpp b/src/unit.hpp index 5ae823bf901..e3d903c30c2 100644 --- a/src/unit.hpp +++ b/src/unit.hpp @@ -171,7 +171,7 @@ public: bool get_state(const std::string& state) const; void set_state(const std::string &state, bool value); enum state_t { STATE_SLOWED = 0, STATE_POISONED, STATE_PETRIFIED, - STATE_UNCOVERED, STATE_NOT_MOVED, STATE_UNHEALABLE, STATE_UNKNOWN = -1 }; + STATE_UNCOVERED, STATE_NOT_MOVED, STATE_UNHEALABLE, STATE_GUARDIAN, STATE_UNKNOWN = -1 }; void set_state(state_t state, bool value); bool get_state(state_t state) const; static state_t get_known_boolean_state_id(const std::string &state); @@ -190,8 +190,6 @@ public: void set_role(const std::string& role) { role_ = role; } const std::string &get_role() const { return role_; } - void assign_ai_special(const std::string& s) { ai_special_ = s;} - std::string get_ai_special() const { return(ai_special_); } const std::vector& attacks() const { return attacks_; } std::vector& attacks() { return attacks_; } @@ -436,7 +434,6 @@ private: std::vector overlays_; std::string role_; - std::string ai_special_; std::vector attacks_; map_location::DIRECTION facing_;