Fighting. More...
#include "actions/attack.hpp"
#include <utility>
#include "actions/advancement.hpp"
#include "actions/vision.hpp"
#include "game_classification.hpp"
#include "game_config.hpp"
#include "game_data.hpp"
#include "game_events/pump.hpp"
#include "gettext.hpp"
#include "log.hpp"
#include "map/map.hpp"
#include "mouse_handler_base.hpp"
#include "play_controller.hpp"
#include "preferences/preferences.hpp"
#include "random.hpp"
#include "replay.hpp"
#include "resources.hpp"
#include "statistics.hpp"
#include "synced_checkup.hpp"
#include "team.hpp"
#include "tod_manager.hpp"
#include "units/abilities.hpp"
#include "units/animation_component.hpp"
#include "units/map.hpp"
#include "units/udisplay.hpp"
#include "units/unit.hpp"
#include "units/types.hpp"
#include "utils/optional_fwd.hpp"
#include "whiteboard/manager.hpp"
#include "wml_exception.hpp"
Go to the source code of this file.
Macros | |
#define | DBG_NG LOG_STREAM(debug, log_engine) |
#define | LOG_NG LOG_STREAM(info, log_engine) |
#define | WRN_NG LOG_STREAM(err, log_engine) |
#define | ERR_NG LOG_STREAM(err, log_engine) |
#define | DBG_AT LOG_STREAM(debug, log_attack) |
#define | LOG_AT LOG_STREAM(info, log_attack) |
#define | WRN_AT LOG_STREAM(err, log_attack) |
#define | ERR_AT LOG_STREAM(err, log_attack) |
#define | LOG_CF LOG_STREAM(info, log_config) |
Functions | |
void | attack_unit (const map_location &attacker, const map_location &defender, int attack_with, int defend_with, bool update_display) |
Performs an attack. More... | |
void | attack_unit_and_advance (const map_location &attacker, const map_location &defender, int attack_with, int defend_with, bool update_display) |
Performs an attack, and advanced the units afterwards. More... | |
int | under_leadership (const unit &u, const map_location &loc, const_attack_ptr weapon, const_attack_ptr opp_weapon) |
Tests if the unit at loc is currently affected by leadership. More... | |
int | combat_modifier (const unit_map &units, const gamemap &map, const map_location &loc, unit_alignments::type alignment, bool is_fearless) |
Returns the amount that a unit's damage should be multiplied by due to the current time of day. More... | |
int | combat_modifier (const time_of_day &effective_tod, unit_alignments::type alignment, bool is_fearless) |
Returns the amount that a unit's damage should be multiplied by due to the current time of day. More... | |
int | generic_combat_modifier (int lawful_bonus, unit_alignments::type alignment, bool is_fearless, int max_liminal_bonus) |
Returns the amount that a unit's damage should be multiplied by due to a given lawful_bonus. More... | |
bool | backstab_check (const map_location &attacker_loc, const map_location &defender_loc, const unit_map &units, const std::vector< team > &teams) |
Function to check if an attack will satisfy the requirements for backstab. More... | |
Variables | |
static lg::log_domain | log_engine ("engine") |
static lg::log_domain | log_attack ("engine/attack") |
static lg::log_domain | log_config ("config") |
Fighting.
Definition in file attack.cpp.
#define DBG_AT LOG_STREAM(debug, log_attack) |
Definition at line 64 of file attack.cpp.
#define DBG_NG LOG_STREAM(debug, log_engine) |
Definition at line 58 of file attack.cpp.
#define ERR_AT LOG_STREAM(err, log_attack) |
Definition at line 67 of file attack.cpp.
#define ERR_NG LOG_STREAM(err, log_engine) |
Definition at line 61 of file attack.cpp.
#define LOG_AT LOG_STREAM(info, log_attack) |
Definition at line 65 of file attack.cpp.
#define LOG_CF LOG_STREAM(info, log_config) |
Definition at line 70 of file attack.cpp.
#define LOG_NG LOG_STREAM(info, log_engine) |
Definition at line 59 of file attack.cpp.
#define WRN_AT LOG_STREAM(err, log_attack) |
Definition at line 66 of file attack.cpp.
#define WRN_NG LOG_STREAM(err, log_engine) |
Definition at line 60 of file attack.cpp.
void attack_unit | ( | const map_location & | attacker, |
const map_location & | defender, | ||
int | attack_with, | ||
int | defend_with, | ||
bool | update_display | ||
) |
Performs an attack.
Definition at line 1564 of file attack.cpp.
References dummy.
Referenced by attack_unit_and_advance(), and ai::simulated_attack().
void attack_unit_and_advance | ( | const map_location & | attacker, |
const map_location & | defender, | ||
int | attack_with, | ||
int | defend_with, | ||
bool | update_display | ||
) |
Performs an attack, and advanced the units afterwards.
Definition at line 1574 of file attack.cpp.
References advance_unit_at(), attack_unit(), unit_map::find(), resources::gameboard, and game_board::units().
Referenced by SYNCED_COMMAND_HANDLER_FUNCTION().
bool backstab_check | ( | const map_location & | attacker_loc, |
const map_location & | defender_loc, | ||
const unit_map & | units, | ||
const std::vector< team > & | teams | ||
) |
Function to check if an attack will satisfy the requirements for backstab.
Input:
Definition at line 1648 of file attack.cpp.
References unit_map::end(), unit_map::find(), get_adjacent_tiles(), and i.
Referenced by ai::ai_default_rca::aspect_attacks_base::do_attack_analysis().
int combat_modifier | ( | const time_of_day & | effective_tod, |
unit_alignments::type | alignment, | ||
bool | is_fearless | ||
) |
Returns the amount that a unit's damage should be multiplied by due to the current time of day.
Definition at line 1611 of file attack.cpp.
References generic_combat_modifier(), tod_manager::get_max_liminal_bonus(), time_of_day::lawful_bonus, and resources::tod_manager.
int combat_modifier | ( | const unit_map & | units, |
const gamemap & | map, | ||
const map_location & | loc, | ||
unit_alignments::type | alignment, | ||
bool | is_fearless | ||
) |
Returns the amount that a unit's damage should be multiplied by due to the current time of day.
Definition at line 1600 of file attack.cpp.
References tod_manager::get_illuminated_time_of_day(), loc, and resources::tod_manager.
Referenced by attack_info(), battle_context_unit_stats::battle_context_unit_stats(), gui2::dialogs::attack_predictions::set_data(), and unit_alignment().
int generic_combat_modifier | ( | int | lawful_bonus, |
unit_alignments::type | alignment, | ||
bool | is_fearless, | ||
int | max_liminal_bonus | ||
) |
Returns the amount that a unit's damage should be multiplied by due to a given lawful_bonus.
Definition at line 1620 of file attack.cpp.
Referenced by battle_context_unit_stats::battle_context_unit_stats(), tod_manager::calculate_best_liminal_bonus(), combat_modifier(), help::generate_time_of_day_topics(), time_of_day_at(), and unit_box_at().
int under_leadership | ( | const unit & | u, |
const map_location & | loc, | ||
const_attack_ptr | weapon = nullptr , |
||
const_attack_ptr | opp_weapon = nullptr |
||
) |
Tests if the unit at loc is currently affected by leadership.
(i.e. has a higher-level unit with the 'leadership' ability next to it).
Returns the bonus percentage (possibly 0 if there's no leader adjacent).
Definition at line 1593 of file attack.cpp.
References unit_abilities::EFFECT_CUMULABLE, unit::get_abilities_weapons(), unit_abilities::effect::get_composite_value(), and loc.
Referenced by attack_info(), battle_context_unit_stats::battle_context_unit_stats(), ai::ai_default_rca::aspect_attacks_base::do_attack_analysis(), and gui2::dialogs::attack_predictions::set_data().
|
static |
Referenced by battle_context::choose_attacker_weapon(), and battle_context::choose_defender_weapon().
|
static |
|
static |