Pass player_info to ai_do_actual_firing_stuff
This commit is contained in:
parent
ca8fa9c3b6
commit
65b649bc75
|
@ -2551,7 +2551,7 @@ static int maybe_ai_do_actual_firing_stuff(const vobjptr_t obj, ai_static *aip)
|
|||
}
|
||||
|
||||
#if defined(DXX_BUILD_DESCENT_I)
|
||||
static void ai_do_actual_firing_stuff(const vobjptridx_t obj, ai_static *aip, ai_local *ailp, const robot_info *robptr, const vms_vector &vec_to_player, fix dist_to_player, const vms_vector &gun_point, int player_visibility, int object_animates, int)
|
||||
static void ai_do_actual_firing_stuff(const vobjptridx_t obj, ai_static *aip, ai_local *ailp, const robot_info *robptr, const vms_vector &vec_to_player, fix dist_to_player, const vms_vector &gun_point, int player_visibility, int object_animates, const player_info &player_info, int)
|
||||
{
|
||||
fix dot;
|
||||
|
||||
|
@ -2579,7 +2579,6 @@ static void ai_do_actual_firing_stuff(const vobjptridx_t obj, ai_static *aip, ai
|
|||
} else {
|
||||
if (!ai_multiplayer_awareness(obj, ROBOT_FIRE_AGITATION))
|
||||
return;
|
||||
auto &player_info = get_local_plrobj().ctype.player_info;
|
||||
ai_fire_laser_at_player(obj, player_info.powerup_flags, gun_point, 0);
|
||||
}
|
||||
}
|
||||
|
@ -2605,7 +2604,6 @@ static void ai_do_actual_firing_stuff(const vobjptridx_t obj, ai_static *aip, ai
|
|||
&& (vm_vec_dist_quick(Hit_pos, obj->pos) > F1_0*40)) {
|
||||
if (!ai_multiplayer_awareness(obj, ROBOT_FIRE_AGITATION))
|
||||
return;
|
||||
auto &player_info = get_local_plrobj().ctype.player_info;
|
||||
ai_fire_laser_at_player(obj, player_info.powerup_flags, gun_point, 0);
|
||||
|
||||
aip->GOAL_STATE = AIS_RECO;
|
||||
|
@ -2628,7 +2626,7 @@ static void ai_do_actual_firing_stuff(const vobjptridx_t obj, ai_static *aip, ai
|
|||
// --------------------------------------------------------------------------------------------------------------------
|
||||
// If fire_anyway, fire even if player is not visible. We're firing near where we believe him to be. Perhaps he's
|
||||
// lurking behind a corner.
|
||||
static void ai_do_actual_firing_stuff(const vobjptridx_t obj, ai_static *aip, ai_local *ailp, const robot_info *robptr, const vms_vector &vec_to_player, fix dist_to_player, vms_vector &gun_point, int player_visibility, int object_animates, int gun_num)
|
||||
static void ai_do_actual_firing_stuff(const vobjptridx_t obj, ai_static *aip, ai_local *ailp, const robot_info *robptr, const vms_vector &vec_to_player, fix dist_to_player, vms_vector &gun_point, int player_visibility, int object_animates, const player_info &player_info, int gun_num)
|
||||
{
|
||||
fix dot;
|
||||
|
||||
|
@ -2666,7 +2664,6 @@ static void ai_do_actual_firing_stuff(const vobjptridx_t obj, ai_static *aip, ai
|
|||
if (!ai_multiplayer_awareness(obj, ROBOT_FIRE_AGITATION))
|
||||
return;
|
||||
// New, multi-weapon-type system, 06/05/95 (life is slipping away...)
|
||||
auto &player_info = get_local_plrobj().ctype.player_info;
|
||||
if (ready_to_fire_weapon1(ailp, 0)) {
|
||||
ai_fire_laser_at_player(obj, player_info.powerup_flags, gun_point, gun_num, fire_pos);
|
||||
Last_fired_upon_player_pos = fire_pos;
|
||||
|
@ -2712,7 +2709,6 @@ static void ai_do_actual_firing_stuff(const vobjptridx_t obj, ai_static *aip, ai
|
|||
&& (vm_vec_dist_quick(Hit_pos, obj->pos) > F1_0*40)) {
|
||||
if (!ai_multiplayer_awareness(obj, ROBOT_FIRE_AGITATION))
|
||||
return;
|
||||
auto &player_info = get_local_plrobj().ctype.player_info;
|
||||
ai_fire_laser_at_player(obj, player_info.powerup_flags, gun_point, gun_num, Believed_player_pos);
|
||||
|
||||
aip->GOAL_STATE = AIS_RECO;
|
||||
|
@ -2755,14 +2751,12 @@ static void ai_do_actual_firing_stuff(const vobjptridx_t obj, ai_static *aip, ai
|
|||
// New, multi-weapon-type system, 06/05/95 (life is slipping away...)
|
||||
if (ready_to_fire_weapon1(ailp, 0))
|
||||
{
|
||||
auto &player_info = get_local_plrobj().ctype.player_info;
|
||||
ai_fire_laser_at_player(obj, player_info.powerup_flags, gun_point, gun_num, Last_fired_upon_player_pos);
|
||||
}
|
||||
if (gun_num != 0) {
|
||||
|
||||
if (ready_to_fire_weapon2(robptr, ailp, 0)) {
|
||||
calc_gun_point(gun_point, obj, 0);
|
||||
auto &player_info = get_local_plrobj().ctype.player_info;
|
||||
ai_fire_laser_at_player(obj, player_info.powerup_flags, gun_point, 0, Last_fired_upon_player_pos);
|
||||
}
|
||||
}
|
||||
|
@ -3514,7 +3508,7 @@ _exit_cheat:
|
|||
if ((player_visibility < 2) && (previous_visibility == 2)) { // this is redundant: mk, 01/15/95: && (ailp->mode == ai_mode::AIM_CHASE_OBJECT))
|
||||
if (!ai_multiplayer_awareness(obj, 53)) {
|
||||
if (maybe_ai_do_actual_firing_stuff(obj, aip))
|
||||
ai_do_actual_firing_stuff(obj, aip, ailp, robptr, vec_to_player, dist_to_player, gun_point, player_visibility, object_animates, aip->CURRENT_GUN);
|
||||
ai_do_actual_firing_stuff(obj, aip, ailp, robptr, vec_to_player, dist_to_player, gun_point, player_visibility, object_animates, player_info, aip->CURRENT_GUN);
|
||||
return;
|
||||
}
|
||||
create_path_to_player(obj, 8, 1);
|
||||
|
@ -3555,7 +3549,7 @@ _exit_cheat:
|
|||
|
||||
if (!ai_multiplayer_awareness(obj, 64)) {
|
||||
if (maybe_ai_do_actual_firing_stuff(obj, aip))
|
||||
ai_do_actual_firing_stuff(obj, aip, ailp, robptr, vec_to_player, dist_to_player, gun_point, player_visibility, object_animates, aip->CURRENT_GUN);
|
||||
ai_do_actual_firing_stuff(obj, aip, ailp, robptr, vec_to_player, dist_to_player, gun_point, player_visibility, object_animates, player_info, aip->CURRENT_GUN);
|
||||
return;
|
||||
}
|
||||
#if defined(DXX_BUILD_DESCENT_I)
|
||||
|
@ -3565,7 +3559,7 @@ _exit_cheat:
|
|||
} else if ((aip->CURRENT_STATE != AIS_REST) && (aip->GOAL_STATE != AIS_REST)) {
|
||||
if (!ai_multiplayer_awareness(obj, 70)) {
|
||||
if (maybe_ai_do_actual_firing_stuff(obj, aip))
|
||||
ai_do_actual_firing_stuff(obj, aip, ailp, robptr, vec_to_player, dist_to_player, gun_point, player_visibility, object_animates, aip->CURRENT_GUN);
|
||||
ai_do_actual_firing_stuff(obj, aip, ailp, robptr, vec_to_player, dist_to_player, gun_point, player_visibility, object_animates, player_info, aip->CURRENT_GUN);
|
||||
return;
|
||||
}
|
||||
ai_move_relative_to_player(obj, ailp, dist_to_player, vec_to_player, circle_distance, 0, player_visibility, player_info);
|
||||
|
@ -3671,7 +3665,7 @@ _exit_cheat:
|
|||
if (!ai_multiplayer_awareness(obj, anger_level)) {
|
||||
if (maybe_ai_do_actual_firing_stuff(obj, aip)) {
|
||||
compute_vis_and_vec(obj, player_info.powerup_flags, vis_vec_pos, ailp, vec_to_player, &player_visibility, robptr, &visibility_and_vec_computed);
|
||||
ai_do_actual_firing_stuff(obj, aip, ailp, robptr, vec_to_player, dist_to_player, gun_point, player_visibility, object_animates, aip->CURRENT_GUN);
|
||||
ai_do_actual_firing_stuff(obj, aip, ailp, robptr, vec_to_player, dist_to_player, gun_point, player_visibility, object_animates, player_info, aip->CURRENT_GUN);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
@ -3736,7 +3730,7 @@ _exit_cheat:
|
|||
if (!ai_multiplayer_awareness(obj, 71)) {
|
||||
if (maybe_ai_do_actual_firing_stuff(obj, aip)) {
|
||||
compute_vis_and_vec(obj, player_info.powerup_flags, vis_vec_pos, ailp, vec_to_player, &player_visibility, robptr, &visibility_and_vec_computed);
|
||||
ai_do_actual_firing_stuff(obj, aip, ailp, robptr, vec_to_player, dist_to_player, gun_point, player_visibility, object_animates, aip->CURRENT_GUN);
|
||||
ai_do_actual_firing_stuff(obj, aip, ailp, robptr, vec_to_player, dist_to_player, gun_point, player_visibility, object_animates, player_info, aip->CURRENT_GUN);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
@ -3768,7 +3762,7 @@ _exit_cheat:
|
|||
const auto vec_to_goal = vm_vec_normalized_quick(vm_vec_sub(goal_point, obj->pos));
|
||||
move_towards_vector(obj, vec_to_goal, 0);
|
||||
ai_turn_towards_vector(vec_to_player, obj, robptr->turn_time[Difficulty_level]);
|
||||
ai_do_actual_firing_stuff(obj, aip, ailp, robptr, vec_to_player, dist_to_player, gun_point, player_visibility, object_animates, aip->CURRENT_GUN);
|
||||
ai_do_actual_firing_stuff(obj, aip, ailp, robptr, vec_to_player, dist_to_player, gun_point, player_visibility, object_animates, player_info, aip->CURRENT_GUN);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
@ -3794,7 +3788,7 @@ _exit_cheat:
|
|||
{
|
||||
if (!ai_multiplayer_awareness(obj, 71)) {
|
||||
if (maybe_ai_do_actual_firing_stuff(obj, aip))
|
||||
ai_do_actual_firing_stuff(obj, aip, ailp, robptr, vec_to_player, dist_to_player, gun_point, player_visibility, object_animates, aip->CURRENT_GUN);
|
||||
ai_do_actual_firing_stuff(obj, aip, ailp, robptr, vec_to_player, dist_to_player, gun_point, player_visibility, object_animates, player_info, aip->CURRENT_GUN);
|
||||
return;
|
||||
}
|
||||
ai_turn_towards_vector(vec_to_player, obj, robptr->turn_time[Difficulty_level]);
|
||||
|
@ -3812,7 +3806,7 @@ _exit_cheat:
|
|||
aip->behavior = ai_behavior::AIB_NORMAL;
|
||||
if (!ai_multiplayer_awareness(obj, 80)) {
|
||||
if (maybe_ai_do_actual_firing_stuff(obj, aip))
|
||||
ai_do_actual_firing_stuff(obj, aip, ailp, robptr, vec_to_player, dist_to_player, gun_point, player_visibility, object_animates, aip->CURRENT_GUN);
|
||||
ai_do_actual_firing_stuff(obj, aip, ailp, robptr, vec_to_player, dist_to_player, gun_point, player_visibility, object_animates, player_info, aip->CURRENT_GUN);
|
||||
return;
|
||||
}
|
||||
ai_move_relative_to_player(obj, ailp, dist_to_player, vec_to_player, 0, 0, player_visibility, player_info);
|
||||
|
@ -3821,7 +3815,7 @@ _exit_cheat:
|
|||
// Robots in hover mode are allowed to evade at half normal speed.
|
||||
if (!ai_multiplayer_awareness(obj, 81)) {
|
||||
if (maybe_ai_do_actual_firing_stuff(obj, aip))
|
||||
ai_do_actual_firing_stuff(obj, aip, ailp, robptr, vec_to_player, dist_to_player, gun_point, player_visibility, object_animates, aip->CURRENT_GUN);
|
||||
ai_do_actual_firing_stuff(obj, aip, ailp, robptr, vec_to_player, dist_to_player, gun_point, player_visibility, object_animates, player_info, aip->CURRENT_GUN);
|
||||
return;
|
||||
}
|
||||
ai_move_relative_to_player(obj, ailp, dist_to_player, vec_to_player, 0, 1, player_visibility, player_info);
|
||||
|
@ -3872,7 +3866,7 @@ _exit_cheat:
|
|||
case ai_mode::AIM_SNIPE_ATTACK:
|
||||
case ai_mode::AIM_SNIPE_FIRE:
|
||||
if (ai_multiplayer_awareness(obj, 53)) {
|
||||
ai_do_actual_firing_stuff(obj, aip, ailp, robptr, vec_to_player, dist_to_player, gun_point, player_visibility, object_animates, aip->CURRENT_GUN);
|
||||
ai_do_actual_firing_stuff(obj, aip, ailp, robptr, vec_to_player, dist_to_player, gun_point, player_visibility, object_animates, player_info, aip->CURRENT_GUN);
|
||||
if (robot_is_thief(robptr))
|
||||
ai_move_relative_to_player(obj, ailp, dist_to_player, vec_to_player, 0, 0, player_visibility, player_info);
|
||||
break;
|
||||
|
@ -4022,7 +4016,7 @@ _exit_cheat:
|
|||
if (!ai_multiplayer_awareness(obj, (ROBOT_FIRE_AGITATION-1)))
|
||||
{
|
||||
if (Game_mode & GM_MULTI) {
|
||||
ai_do_actual_firing_stuff(obj, aip, ailp, robptr, vec_to_player, dist_to_player, gun_point, player_visibility, object_animates, 0);
|
||||
ai_do_actual_firing_stuff(obj, aip, ailp, robptr, vec_to_player, dist_to_player, gun_point, player_visibility, object_animates, player_info, 0);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
@ -4035,7 +4029,7 @@ _exit_cheat:
|
|||
if (player_visibility == 2) {
|
||||
if (!ai_multiplayer_awareness(obj, (ROBOT_FIRE_AGITATION-1))) {
|
||||
if (Game_mode & GM_MULTI) {
|
||||
ai_do_actual_firing_stuff(obj, aip, ailp, robptr, vec_to_player, dist_to_player, gun_point, player_visibility, object_animates, aip->CURRENT_GUN);
|
||||
ai_do_actual_firing_stuff(obj, aip, ailp, robptr, vec_to_player, dist_to_player, gun_point, player_visibility, object_animates, player_info, aip->CURRENT_GUN);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
@ -4045,7 +4039,7 @@ _exit_cheat:
|
|||
#endif
|
||||
|
||||
// Fire at player, if appropriate.
|
||||
ai_do_actual_firing_stuff(obj, aip, ailp, robptr, vec_to_player, dist_to_player, gun_point, player_visibility, object_animates, aip->CURRENT_GUN);
|
||||
ai_do_actual_firing_stuff(obj, aip, ailp, robptr, vec_to_player, dist_to_player, gun_point, player_visibility, object_animates, player_info, aip->CURRENT_GUN);
|
||||
|
||||
break;
|
||||
case AIS_RECO:
|
||||
|
|
Loading…
Reference in a new issue