Computes the statistics of a battle between an attacker and a defender unit. More...
#include <attack.hpp>
Public Member Functions | |
battle_context (const unit_map &units, const map_location &attacker_loc, const map_location &defender_loc, int attacker_weapon=-1, int defender_weapon=-1, double aggression=0.0, const combatant *prev_def=nullptr, const unit *attacker_ptr=nullptr) | |
If no attacker_weapon is given, we select the best one, based on harm_weight (1.0 means 1 hp lost counters 1 hp damage, 0.0 means we ignore harm weight). More... | |
battle_context (const battle_context_unit_stats &att, const battle_context_unit_stats &def) | |
Used by the AI which caches battle_context_unit_stats. More... | |
battle_context (const battle_context &other) | |
~battle_context () | |
battle_context & | operator= (const battle_context &other) |
const battle_context_unit_stats & | get_attacker_stats () const |
This method returns the statistics of the attacker. More... | |
const battle_context_unit_stats & | get_defender_stats () const |
This method returns the statistics of the defender. More... | |
const combatant & | get_attacker_combatant (const combatant *prev_def=nullptr) |
Get the simulation results. More... | |
const combatant & | get_defender_combatant (const combatant *prev_def=nullptr) |
bool | better_attack (class battle_context &that, double harm_weight) |
Given this harm_weight, is this attack better than that? More... | |
Static Public Member Functions | |
static bool | better_combat (const combatant &us_a, const combatant &them_a, const combatant &us_b, const combatant &them_b, double harm_weight) |
Private Member Functions | |
int | choose_attacker_weapon (const unit &attacker, const unit &defender, const unit_map &units, const map_location &attacker_loc, const map_location &defender_loc, double harm_weight, int *defender_weapon, const combatant *prev_def) |
int | choose_defender_weapon (const unit &attacker, const unit &defender, unsigned attacker_weapon, const unit_map &units, const map_location &attacker_loc, const map_location &defender_loc, const combatant *prev_def) |
Private Attributes | |
battle_context_unit_stats * | attacker_stats_ |
Statistics of the units. More... | |
battle_context_unit_stats * | defender_stats_ |
combatant * | attacker_combatant_ |
Outcome of simulated fight. More... | |
combatant * | defender_combatant_ |
Computes the statistics of a battle between an attacker and a defender unit.
Definition at line 135 of file attack.hpp.
battle_context::battle_context | ( | const unit_map & | units, |
const map_location & | attacker_loc, | ||
const map_location & | defender_loc, | ||
int | attacker_weapon = -1 , |
||
int | defender_weapon = -1 , |
||
double | aggression = 0.0 , |
||
const combatant * | prev_def = nullptr , |
||
const unit * | attacker_ptr = nullptr |
||
) |
If no attacker_weapon is given, we select the best one, based on harm_weight (1.0 means 1 hp lost counters 1 hp damage, 0.0 means we ignore harm weight).
prev_def is for predicting multiple attacks against a defender.
Definition at line 320 of file attack.cpp.
References _(), attacker_combatant_, attacker_stats_, unit::attacks(), choose_attacker_weapon(), choose_defender_weapon(), defender_combatant_, defender_stats_, unit_map::find(), and VALIDATE.
battle_context::battle_context | ( | const battle_context_unit_stats & | att, |
const battle_context_unit_stats & | def | ||
) |
Used by the AI which caches battle_context_unit_stats.
Definition at line 369 of file attack.cpp.
battle_context::battle_context | ( | const battle_context & | other | ) |
Definition at line 378 of file attack.cpp.
battle_context::~battle_context | ( | ) |
Definition at line 385 of file attack.cpp.
References attacker_combatant_, attacker_stats_, defender_combatant_, and defender_stats_.
bool battle_context::better_attack | ( | class battle_context & | that, |
double | harm_weight | ||
) |
Given this harm_weight, is this attack better than that?
Definition at line 435 of file attack.cpp.
References better_combat(), get_attacker_combatant(), and get_defender_combatant().
|
static |
Definition at line 442 of file attack.cpp.
References combatant::average_hp(), combatant::hp_dist, game_config::poison_amount, and combatant::poisoned.
Referenced by better_attack(), ai::default_recruitment::attack_simulation::better_result(), choose_attacker_weapon(), and choose_defender_weapon().
|
private |
Definition at line 472 of file attack.cpp.
References battle_context_unit_stats::attack_num, attack_type::attack_weight(), attacker_combatant_, attacker_stats_, unit::attacks(), better_combat(), choose_defender_weapon(), defender_combatant_, defender_stats_, battle_context_unit_stats::disable, combatant::fight(), and i.
Referenced by battle_context().
|
private |
Definition at line 569 of file attack.cpp.
References _(), battle_context_unit_stats::attack_num, attacker_combatant_, attacker_stats_, unit::attacks(), better_combat(), battle_context_unit_stats::chance_to_hit, battle_context_unit_stats::damage, defender_combatant_, defender_stats_, attack_type::defense_weight(), battle_context_unit_stats::disable, combatant::fight(), i, battle_context_unit_stats::num_blows, attack_type::range(), and VALIDATE.
Referenced by battle_context(), and choose_attacker_weapon().
Get the simulation results.
Definition at line 410 of file attack.cpp.
References attacker_combatant_, attacker_stats_, defender_combatant_, defender_stats_, and combatant::fight().
Referenced by ai::attack_analysis::analyze(), better_attack(), and ai::attack_result::do_execute().
|
inline |
This method returns the statistics of the attacker.
Definition at line 160 of file attack.hpp.
References attacker_stats_.
Referenced by ai::attack_analysis::analyze(), battle_prediction_pane::battle_prediction_pane(), ai::attack_result::do_execute(), and game_logic::attack_callable::weapon().
Definition at line 422 of file attack.cpp.
References attacker_combatant_, attacker_stats_, defender_combatant_, defender_stats_, and combatant::fight().
Referenced by ai::attack_analysis::analyze(), better_attack(), and ai::attack_result::do_execute().
|
inline |
This method returns the statistics of the defender.
Definition at line 163 of file attack.hpp.
References defender_stats_.
Referenced by ai::attack_analysis::analyze(), battle_prediction_pane::battle_prediction_pane(), game_logic::attack_callable::defender_weapon(), and ai::attack_result::do_execute().
battle_context & battle_context::operator= | ( | const battle_context & | other | ) |
Definition at line 393 of file attack.cpp.
References attacker_combatant_, attacker_stats_, defender_combatant_, and defender_stats_.
|
private |
Outcome of simulated fight.
Definition at line 193 of file attack.hpp.
Referenced by battle_context(), choose_attacker_weapon(), choose_defender_weapon(), get_attacker_combatant(), get_defender_combatant(), operator=(), and ~battle_context().
|
private |
Statistics of the units.
Definition at line 190 of file attack.hpp.
Referenced by battle_context(), choose_attacker_weapon(), choose_defender_weapon(), get_attacker_combatant(), get_attacker_stats(), get_defender_combatant(), operator=(), and ~battle_context().
|
private |
Definition at line 193 of file attack.hpp.
Referenced by battle_context(), choose_attacker_weapon(), choose_defender_weapon(), get_attacker_combatant(), get_defender_combatant(), operator=(), and ~battle_context().
|
private |
Definition at line 190 of file attack.hpp.
Referenced by battle_context(), choose_attacker_weapon(), choose_defender_weapon(), get_attacker_combatant(), get_defender_combatant(), get_defender_stats(), operator=(), and ~battle_context().