#include <contexts.hpp>
Public Member Functions | |
attack_analysis () | |
void | analyze (const gamemap &map, unit_map &units, const readonly_context &ai_obj, const move_map &dstsrc, const move_map &srcdst, const move_map &enemy_dstsrc, double aggression) |
double | rating (double aggression, const readonly_context &ai_obj) const |
wfl::variant | get_value (const std::string &key) const override |
void | get_inputs (wfl::formula_input_vector &inputs) const override |
bool | attack_close (const map_location &loc) const |
wfl::variant | execute_self (wfl::variant ctxt) override |
Public Member Functions inherited from wfl::formula_callable | |
formula_callable (bool has_self=true) | |
virtual | ~formula_callable () |
formula_callable_ptr | fake_ptr () |
const_formula_callable_ptr | fake_ptr () const |
variant | query_value (const std::string &key) const |
void | mutate_value (const std::string &key, const variant &value) |
formula_input_vector | inputs () const |
bool | equals (const formula_callable &other) const |
bool | less (const formula_callable &other) const |
bool | has_key (const std::string &key) const |
void | serialize (std::string &str) const |
void | subscribe_dtor (callable_die_subscriber *d) const |
void | unsubscribe_dtor (callable_die_subscriber *d) const |
Public Attributes | |
map_location | target |
std::vector< std::pair< map_location, map_location > > | movements |
double | target_value |
The value of the unit being targeted. More... | |
double | avg_losses |
The value on average, of units lost in the combat. More... | |
double | chance_to_kill |
Estimated % chance to kill the unit. More... | |
double | avg_damage_inflicted |
The average hitpoints damage inflicted. More... | |
int | target_starting_damage |
double | avg_damage_taken |
The average hitpoints damage taken. More... | |
double | resources_used |
The sum of the values of units used in the attack. More... | |
double | terrain_quality |
The weighted average of the % chance to hit each attacking unit. More... | |
double | alternative_terrain_quality |
The weighted average of the % defense of the best possible terrain that the attacking units could reach this turn, without attacking (good for comparison to see just how good/bad 'terrain_quality' is). More... | |
double | vulnerability |
The vulnerability is the power projection of enemy units onto the hex we're standing on. More... | |
double | support |
bool | leader_threat |
Is true if the unit is a threat to our leader. More... | |
bool | uses_leader |
Is true if this attack sequence makes use of the leader. More... | |
bool | is_surrounded |
Is true if the units involved in this attack sequence are surrounded. More... | |
Additional Inherited Members | |
Protected Types inherited from wfl::formula_callable | |
enum | TYPE { FORMULA_C , TERRAIN_C , LOCATION_C , UNIT_TYPE_C , UNIT_C , ATTACK_TYPE_C , MOVE_PARTIAL_C , MOVE_C , ATTACK_C , MOVE_MAP_C } |
Protected Member Functions inherited from wfl::formula_callable | |
virtual void | set_value (const std::string &key, const variant &) |
virtual int | do_compare (const formula_callable *callable) const |
virtual void | serialize_to_string (std::string &) const |
Static Protected Member Functions inherited from wfl::formula_callable | |
template<typename T , typename K > | |
static variant | convert_map (const std::map< T, K > &input_map) |
template<typename T > | |
static variant | convert_set (const std::set< T > &input_set) |
template<typename T > | |
static variant | convert_vector (const std::vector< T > &input_vector) |
static void | add_input (formula_input_vector &inputs, const std::string &key, formula_access access_type=formula_access::read_only) |
Protected Attributes inherited from wfl::formula_callable | |
TYPE | type_ |
std::set< callable_die_subscriber * > | dtor_notify |
Definition at line 39 of file contexts.hpp.
|
inline |
Definition at line 42 of file contexts.hpp.
void ai::attack_analysis::analyze | ( | const gamemap & | map, |
unit_map & | units, | ||
const readonly_context & | ai_obj, | ||
const move_map & | dstsrc, | ||
const move_map & | srcdst, | ||
const move_map & | enemy_dstsrc, | ||
double | aggression | ||
) |
Definition at line 45 of file attack.cpp.
References alternative_terrain_quality, combatant::average_hp(), avg_damage_inflicted, avg_damage_taken, avg_losses, ai::readonly_context::best_defensive_position(), ai::defensive_position::chance_to_hit, chance_to_kill, game_config::combat_xp(), ai::readonly_context::current_team(), unit_map::end(), unit_map::extract(), unit_map::find(), get_adjacent_tiles(), ai::readonly_context::get_leader_aggression(), gamemap::gives_healing(), combatant::hp_dist, i, unit_map::insert(), team::is_enemy(), gamemap::is_village(), game_config::kill_xp(), leader_threat, unit_map::move(), movements, game_config::poison_amount, resources_used, unit::STATE_POISONED, target_starting_damage, target_value, terrain_quality, ai::target::type, ai::readonly_context::unit_stats_cache(), and uses_leader.
Referenced by ai::ai_default_rca::aspect_attacks_base::do_attack_analysis().
bool ai::attack_analysis::attack_close | ( | const map_location & | loc | ) | const |
Definition at line 256 of file attack.cpp.
References distance_between(), ai::manager::get_ai_info(), ai::manager::get_singleton(), i, loc, and ai::game_info::recent_attacks.
Referenced by rating().
|
overridevirtual |
Implements wfl::action_callable.
Definition at line 410 of file attack.cpp.
References wfl::variant::as_callable(), unit::attacks_left(), unit_map::count(), ai::attack_result::E_EMPTY_DEFENDER, ai::move_result::E_NO_UNIT, unit_map::end(), ai::readwrite_context::execute_attack_action(), ai::readwrite_context::execute_move_action(), wfl::formula_callable::fake_ptr(), unit_map::find(), resources::gameboard, ai::get_ai_context(), LOG_AI, movements, target, and game_board::units().
|
overridevirtual |
Reimplemented from wfl::formula_callable.
Definition at line 389 of file attack.cpp.
References wfl::formula_callable::add_input(), and wfl::formula_callable::inputs().
|
overridevirtual |
Implements wfl::formula_callable.
Definition at line 334 of file attack.cpp.
References alternative_terrain_quality, avg_damage_inflicted, avg_damage_taken, avg_losses, chance_to_kill, is_surrounded, leader_threat, movements, n, resources_used, support, target_starting_damage, target_value, terrain_quality, uses_leader, and vulnerability.
double ai::attack_analysis::rating | ( | double | aggression, |
const readonly_context & | ai_obj | ||
) | const |
Definition at line 269 of file attack.cpp.
References alternative_terrain_quality, attack_close(), avg_damage_inflicted, avg_damage_taken, avg_losses, chance_to_kill, ai::readonly_context::get_caution(), ai::readonly_context::get_leader_aggression(), is_surrounded, leader_threat, LOG_AI, movements, resources_used, support, target_starting_damage, target_value, terrain_quality, uses_leader, and vulnerability.
Referenced by ai::cfun_attack_rating().
double ai::attack_analysis::alternative_terrain_quality |
The weighted average of the % defense of the best possible terrain that the attacking units could reach this turn, without attacking (good for comparison to see just how good/bad 'terrain_quality' is).
Definition at line 105 of file contexts.hpp.
Referenced by analyze(), get_value(), ai::push_attack_analysis(), and rating().
double ai::attack_analysis::avg_damage_inflicted |
The average hitpoints damage inflicted.
Definition at line 87 of file contexts.hpp.
Referenced by analyze(), get_value(), ai::push_attack_analysis(), and rating().
double ai::attack_analysis::avg_damage_taken |
The average hitpoints damage taken.
Definition at line 92 of file contexts.hpp.
Referenced by analyze(), get_value(), ai::push_attack_analysis(), and rating().
double ai::attack_analysis::avg_losses |
The value on average, of units lost in the combat.
Definition at line 81 of file contexts.hpp.
Referenced by analyze(), get_value(), ai::push_attack_analysis(), and rating().
double ai::attack_analysis::chance_to_kill |
Estimated % chance to kill the unit.
Definition at line 84 of file contexts.hpp.
Referenced by analyze(), get_value(), ai::push_attack_analysis(), and rating().
bool ai::attack_analysis::is_surrounded |
Is true if the units involved in this attack sequence are surrounded.
Definition at line 120 of file contexts.hpp.
Referenced by ai::ai_default_rca::aspect_attacks_base::do_attack_analysis(), get_value(), ai::push_attack_analysis(), and rating().
bool ai::attack_analysis::leader_threat |
Is true if the unit is a threat to our leader.
Definition at line 114 of file contexts.hpp.
Referenced by analyze(), get_value(), ai::push_attack_analysis(), and rating().
std::vector<std::pair<map_location,map_location> > ai::attack_analysis::movements |
Definition at line 75 of file contexts.hpp.
Referenced by analyze(), ai::ai_default_rca::aspect_attacks_base::do_attack_analysis(), ai::ai_default_rca::combat_phase::execute(), execute_self(), get_value(), ai::push_attack_analysis(), and rating().
double ai::attack_analysis::resources_used |
The sum of the values of units used in the attack.
Definition at line 95 of file contexts.hpp.
Referenced by analyze(), get_value(), ai::push_attack_analysis(), and rating().
double ai::attack_analysis::support |
Definition at line 111 of file contexts.hpp.
Referenced by ai::ai_default_rca::aspect_attacks_base::analyze_targets(), ai::ai_default_rca::aspect_attacks_base::do_attack_analysis(), get_value(), ai::push_attack_analysis(), and rating().
map_location ai::attack_analysis::target |
Definition at line 74 of file contexts.hpp.
Referenced by ai::ai_default_rca::aspect_attacks_base::analyze_targets(), ai::ai_default_rca::combat_phase::execute(), execute_self(), and ai::push_attack_analysis().
int ai::attack_analysis::target_starting_damage |
Definition at line 89 of file contexts.hpp.
Referenced by analyze(), get_value(), ai::push_attack_analysis(), and rating().
double ai::attack_analysis::target_value |
The value of the unit being targeted.
Definition at line 78 of file contexts.hpp.
Referenced by analyze(), get_value(), ai::push_attack_analysis(), and rating().
double ai::attack_analysis::terrain_quality |
The weighted average of the % chance to hit each attacking unit.
Definition at line 98 of file contexts.hpp.
Referenced by analyze(), get_value(), ai::push_attack_analysis(), and rating().
bool ai::attack_analysis::uses_leader |
Is true if this attack sequence makes use of the leader.
Definition at line 117 of file contexts.hpp.
Referenced by analyze(), get_value(), ai::push_attack_analysis(), and rating().
double ai::attack_analysis::vulnerability |
The vulnerability is the power projection of enemy units onto the hex we're standing on.
support is the power projection of friendly units.
Definition at line 111 of file contexts.hpp.
Referenced by ai::ai_default_rca::aspect_attacks_base::analyze_targets(), ai::ai_default_rca::aspect_attacks_base::do_attack_analysis(), get_value(), ai::push_attack_analysis(), and rating().