The Battle for Wesnoth  1.13.4+dev
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
Macros | Functions | Variables
attack.cpp File Reference

Fighting. More...

#include "attack.hpp"
#include "vision.hpp"
#include "ai/lua/aspect_advancements.hpp"
#include "attack_prediction.hpp"
#include "config_assign.hpp"
#include "dialogs.hpp"
#include "game_config.hpp"
#include "game_display.hpp"
#include "game_events/manager.hpp"
#include "game_events/pump.hpp"
#include "game_preferences.hpp"
#include "game_data.hpp"
#include "gettext.hpp"
#include "log.hpp"
#include "map/map.hpp"
#include "mouse_handler_base.hpp"
#include "play_controller.hpp"
#include "random_new.hpp"
#include "replay.hpp"
#include "resources.hpp"
#include "statistics.hpp"
#include "synced_checkup.hpp"
#include "synced_user_choice.hpp"
#include "team.hpp"
#include "tod_manager.hpp"
#include "units/unit.hpp"
#include "units/abilities.hpp"
#include "units/animation_component.hpp"
#include "units/udisplay.hpp"
#include "units/helper.hpp"
#include "units/map.hpp"
#include "whiteboard/manager.hpp"
#include "wml_exception.hpp"
Include dependency graph for attack.cpp:

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 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 advance_unit_at (const advance_unit_params &params)
 
static void advance_unit_at (const map_location &loc, const ai::unit_advancements_aspect ai_advancement=ai::unit_advancements_aspect())
 
void attack_unit_and_advance (const map_location &attacker, const map_location &defender, int attack_with, int defend_with, bool update_display, const ai::unit_advancements_aspect &ai_advancement)
 Performs an attack, and advanced the units afterwards. More...
 
unit_ptr get_advanced_unit (const unit &u, const std::string &advance_to)
 Returns the advanced version of a unit (with traits and items retained). More...
 
unit_ptr get_amla_unit (const unit &u, const config &mod_option)
 Returns the AMLA-advanced version of a unit (with traits and items retained). More...
 
void advance_unit (map_location loc, const std::string &advance_to, const bool &fire_event, const config *mod_option)
 Function which will advance the unit at loc to 'advance_to'. More...
 
map_location under_leadership (const unit_map &units, const map_location &loc, int *bonus)
 function which 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_type::ALIGNMENT 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_type::ALIGNMENT alignment, bool is_fearless)
 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_config ("config")
 

Detailed Description

Fighting.

Definition in file attack.cpp.

Macro Definition Documentation

#define DBG_NG   LOG_STREAM(debug, log_engine)

Definition at line 57 of file attack.cpp.

Referenced by advance_unit_at().

#define ERR_NG   LOG_STREAM(err, log_engine)

Definition at line 60 of file attack.cpp.

Referenced by advance_unit_at().

#define LOG_CF   LOG_STREAM(info, log_config)
#define LOG_NG   LOG_STREAM(info, log_engine)

Definition at line 58 of file attack.cpp.

Referenced by advance_unit(), and advance_unit_at().

#define WRN_NG   LOG_STREAM(err, log_engine)

Definition at line 59 of file attack.cpp.

Referenced by advance_unit_at().

Function Documentation

void advance_unit ( map_location  loc,
const std::string advance_to,
const bool &  fire_event = true,
const config mod_option = nullptr 
)

Function which will advance the unit at loc to 'advance_to'.

(Unless mod_option is supplied, in which case an AMLA is performed.) Note that 'loc' is not a reference, because if it were a reference, we couldn't safely pass in a reference to the item in the map that we're going to delete, since deletion would invalidate the reference.

Definition at line 1573 of file attack.cpp.

References actions::actor_sighted(), statistics::advance_unit(), actions::shroud_clearer::clear_unit(), preferences::encountered_units(), unit_map::find(), game_events::t_pump::fire(), actions::shroud_clearer::fire_events(), resources::game_events, get_advanced_unit(), get_amla_unit(), actions::get_sides_not_seeing(), LOG_CF, LOG_NG, game_events::manager::pump(), unit_map::replace(), resources::units, unit_map::iterator_base< iter_types >::valid(), and resources::whiteboard.

Referenced by dialogs::animate_unit_advancement(), and ai::helper_advance_unit().

void advance_unit_at ( const advance_unit_params params)
static void advance_unit_at ( const map_location loc,
const ai::unit_advancements_aspect  ai_advancement = ai::unit_advancements_aspect() 
)
static

Definition at line 1521 of file attack.cpp.

References advance_unit_at().

void attack_unit ( const map_location attacker,
const map_location defender,
int  attack_with,
int  defend_with,
bool  update_display = true 
)

Performs an attack.

Definition at line 1384 of file attack.cpp.

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,
const ai::unit_advancements_aspect ai_advancement 
)

Performs an attack, and advanced the units afterwards.

Definition at line 1524 of file attack.cpp.

References advance_unit_at(), attack_unit(), unit_map::find(), and resources::units.

Referenced by ai::attack_result::do_execute(), and 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:

  • the location from which the attack will occur,
  • the defending unit location,
  • the list of units on the map and
  • the list of teams. The defender and opposite units should be in place already. The attacking unit doesn't need to be, but if it isn't, an external check should be made to make sure the opposite unit isn't also the attacker.

Definition at line 1684 of file attack.cpp.

References unit_map::end(), unit_map::find(), get_adjacent_tiles(), and i.

Referenced by battle_context_unit_stats::battle_context_unit_stats(), and ai::ai_default_rca::aspect_attacks_base::do_attack_analysis().

int combat_modifier ( const unit_map units,
const gamemap map,
const map_location loc,
unit_type::ALIGNMENT  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 1649 of file attack.cpp.

References generic_combat_modifier(), tod_manager::get_illuminated_time_of_day(), time_of_day::lawful_bonus, and resources::tod_manager.

Referenced by attack_info(), battle_context_unit_stats::battle_context_unit_stats(), battle_prediction_pane::get_unit_strings(), and unit_alignment().

int generic_combat_modifier ( int  lawful_bonus,
unit_type::ALIGNMENT  alignment,
bool  is_fearless 
)

Returns the amount that a unit's damage should be multiplied by due to a given lawful_bonus.

Definition at line 1657 of file attack.cpp.

Referenced by battle_context_unit_stats::battle_context_unit_stats(), and combat_modifier().

unit_ptr get_advanced_unit ( const unit u,
const std::string advance_to 
)

Returns the advanced version of a unit (with traits and items retained).

Definition at line 1541 of file attack.cpp.

References unit_type_data::find(), unit::STATE_PETRIFIED, unit::STATE_POISONED, unit::STATE_SLOWED, and unit_types.

Referenced by advance_unit(), and dialogs::advance_unit_dialog().

unit_ptr get_amla_unit ( const unit u,
const config mod_option 
)

Returns the AMLA-advanced version of a unit (with traits and items retained).

Definition at line 1564 of file attack.cpp.

Referenced by advance_unit(), and dialogs::advance_unit_dialog().

map_location under_leadership ( const unit_map units,
const map_location loc,
int bonus = nullptr 
)

function which tests if the unit at loc is currently affected by leadership.

(i.e. has a higher-level 'leadership' unit next to it). If it does, then the location of the leader unit will be returned, Otherwise map_location::null_location() will be returned. If 'bonus' is not nullptr, the % bonus will be stored in it.

Definition at line 1635 of file attack.cpp.

References unit_map::end(), unit_map::find(), unit_ability_list::highest(), and map_location::null_location().

Referenced by attack_info(), battle_context_unit_stats::battle_context_unit_stats(), and battle_prediction_pane::get_unit_strings().

Variable Documentation

lg::log_domain log_config("config")
static
lg::log_domain log_engine("engine")
static