From a5e77c00fed5fa3967afd8dd1b6bed095622eb9e Mon Sep 17 00:00:00 2001 From: gfgtdf Date: Sun, 3 Aug 2014 21:08:48 +0200 Subject: [PATCH] implement pre_advance event pre advance event fires before the user sees the advancement dialog. Implements fr https://gna.org/bugs/?21464 --- src/actions/attack.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/actions/attack.cpp b/src/actions/attack.cpp index c735c499f0c3..86c232ff80d0 100644 --- a/src/actions/attack.cpp +++ b/src/actions/attack.cpp @@ -1459,6 +1459,18 @@ void advance_unit_at(const advance_unit_params& params) return; } + if(params.fire_events_) + { + LOG_NG << "Firing pre_advance event at " << params.loc_ <<".\n"; + game_events::fire("pre_advance", params.loc_); + //TODO: maybe use id instead of location here ?. + u = resources::units->find(params.loc_); + if(!unit_helper::will_certainly_advance(u)) + { + LOG_NG << "pre_advance event aborted advancing.\n"; + return; + } + } //we don't want to let side 1 decide it during start/prestart. int side_for = resources::gamedata->phase() == game_data::PLAY ? 0: u->side(); config selected = mp_sync::get_user_choice("choose",