mirror of
https://github.com/wesnoth/wesnoth
synced 2025-04-25 21:40:25 +00:00
Add pre attack event #4075
This commit is contained in:
parent
cf49f6e230
commit
0f763cfdd6
@ -122,6 +122,26 @@
|
|||||||
[/do_command]
|
[/do_command]
|
||||||
{ASSERT_NO_9_5}
|
{ASSERT_NO_9_5}
|
||||||
|
|
||||||
|
[event]
|
||||||
|
name = pre attack
|
||||||
|
first_time_only = yes
|
||||||
|
{ASSERT_YES_9_5}
|
||||||
|
[move_unit]
|
||||||
|
x,y=9,5
|
||||||
|
to_x,to_y=10,5
|
||||||
|
[/move_unit]
|
||||||
|
[/event]
|
||||||
|
|
||||||
|
[event]
|
||||||
|
name = attack
|
||||||
|
first_time_only = yes
|
||||||
|
{ASSERT_NO_9_5}
|
||||||
|
[move_unit]
|
||||||
|
x,y=10,5
|
||||||
|
to_x,to_y=9,5
|
||||||
|
[/move_unit]
|
||||||
|
[/event]
|
||||||
|
|
||||||
{UNIT 2 "Spearman" 9 5 (id=steve7)}
|
{UNIT 2 "Spearman" 9 5 (id=steve7)}
|
||||||
{ASSERT_YES_9_5}
|
{ASSERT_YES_9_5}
|
||||||
[do_command]
|
[do_command]
|
||||||
|
@ -1367,6 +1367,25 @@ void attack::perform()
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bc_.reset(new battle_context(units_, a_.loc_, d_.loc_, a_.weapon_, d_.weapon_));
|
||||||
|
|
||||||
|
a_stats_ = &bc_->get_attacker_stats();
|
||||||
|
d_stats_ = &bc_->get_defender_stats();
|
||||||
|
|
||||||
|
if(a_stats_->weapon) {
|
||||||
|
a_.weap_id_ = a_stats_->weapon->id();
|
||||||
|
}
|
||||||
|
|
||||||
|
if(d_stats_->weapon) {
|
||||||
|
d_.weap_id_ = d_stats_->weapon->id();
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
fire_event("pre_attack");
|
||||||
|
} catch(const attack_end_exception&) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
a_.get_unit().set_facing(a_.loc_.get_relative_dir(d_.loc_));
|
a_.get_unit().set_facing(a_.loc_.get_relative_dir(d_.loc_));
|
||||||
d_.get_unit().set_facing(d_.loc_.get_relative_dir(a_.loc_));
|
d_.get_unit().set_facing(d_.loc_.get_relative_dir(a_.loc_));
|
||||||
|
|
||||||
@ -1383,32 +1402,17 @@ void attack::perform()
|
|||||||
// If the attacker was invisible, she isn't anymore!
|
// If the attacker was invisible, she isn't anymore!
|
||||||
a_.get_unit().set_state(unit::STATE_UNCOVERED, true);
|
a_.get_unit().set_state(unit::STATE_UNCOVERED, true);
|
||||||
|
|
||||||
bc_.reset(new battle_context(units_, a_.loc_, d_.loc_, a_.weapon_, d_.weapon_));
|
|
||||||
|
|
||||||
a_stats_ = &bc_->get_attacker_stats();
|
|
||||||
d_stats_ = &bc_->get_defender_stats();
|
|
||||||
|
|
||||||
if(a_stats_->disable) {
|
if(a_stats_->disable) {
|
||||||
LOG_NG << "attack::perform(): tried to attack with a disabled attack.";
|
LOG_NG << "attack::perform(): tried to attack with a disabled attack.";
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(a_stats_->weapon) {
|
|
||||||
a_.weap_id_ = a_stats_->weapon->id();
|
|
||||||
}
|
|
||||||
|
|
||||||
if(d_stats_->weapon) {
|
|
||||||
d_.weap_id_ = d_stats_->weapon->id();
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
fire_event("attack");
|
fire_event("attack");
|
||||||
} catch(const attack_end_exception&) {
|
} catch(const attack_end_exception&) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
refresh_bc();
|
|
||||||
|
|
||||||
DBG_NG << "getting attack statistics";
|
DBG_NG << "getting attack statistics";
|
||||||
statistics::attack_context attack_stats(
|
statistics::attack_context attack_stats(
|
||||||
a_.get_unit(), d_.get_unit(), a_stats_->chance_to_hit, d_stats_->chance_to_hit);
|
a_.get_unit(), d_.get_unit(), a_stats_->chance_to_hit, d_stats_->chance_to_hit);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user