Pass player object to check_trigger
This commit is contained in:
parent
171e303adb
commit
1dcacefc9c
|
@ -168,7 +168,7 @@ constexpr uint8_t trigger_none = 0xff;
|
|||
|
||||
extern void trigger_init();
|
||||
namespace dsx {
|
||||
void check_trigger(vcsegptridx_t seg, short side, vcobjptridx_t objnum, int shot);
|
||||
void check_trigger(vcsegptridx_t seg, short side, object &plrobj, vcobjptridx_t objnum, int shot);
|
||||
int check_trigger_sub(object &, trgnum_t trigger_num, int player_num,int shot);
|
||||
|
||||
static inline int trigger_is_exit(const trigger *t)
|
||||
|
|
|
@ -784,7 +784,7 @@ static void collide_weapon_and_wall(const vobjptridx_t weapon, const vsegptridx_
|
|||
//because robots can shoot out wall triggers, and so the trigger better
|
||||
//take effect
|
||||
// NO -- Changed by MK, 10/18/95. We don't want robots blowing puzzles. Only player or buddy can open!
|
||||
check_trigger(hitseg, hitwall, vcobjptridx(weapon->ctype.laser_info.parent_num), 1);
|
||||
check_trigger(hitseg, hitwall, plrobj, vcobjptridx(weapon->ctype.laser_info.parent_num), 1);
|
||||
}
|
||||
|
||||
if (get_weapon_id(weapon) == weapon_id_type::EARTHSHAKER_ID)
|
||||
|
|
|
@ -1929,7 +1929,8 @@ static int newdemo_read_frame_information(int rewrite)
|
|||
}
|
||||
|
||||
reset_objects(1);
|
||||
get_local_plrobj().ctype.player_info.homing_object_dist = -1;
|
||||
auto &plrobj = get_local_plrobj();
|
||||
plrobj.ctype.player_info.homing_object_dist = -1;
|
||||
|
||||
prev_obj = NULL;
|
||||
|
||||
|
@ -2241,12 +2242,12 @@ static int newdemo_read_frame_information(int rewrite)
|
|||
break;
|
||||
}
|
||||
if (!truth)
|
||||
check_trigger(segp, side, vobjptridx(objnum), shot);
|
||||
check_trigger(segp, side, plrobj, vobjptridx(objnum), shot);
|
||||
} else if (!rewrite)
|
||||
#endif
|
||||
{
|
||||
if (Newdemo_vcr_state != ND_STATE_PAUSED)
|
||||
check_trigger(segp, side, vobjptridx(objnum), shot);
|
||||
check_trigger(segp, side, plrobj, vobjptridx(objnum), shot);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1742,7 +1742,7 @@ static void object_move_one(const vobjptridx_t obj)
|
|||
const auto connect_side = find_connect_side(seg1, seg0);
|
||||
if (connect_side != side_none)
|
||||
{
|
||||
check_trigger(seg0, connect_side, obj,0);
|
||||
check_trigger(seg0, connect_side, get_local_plrobj(), obj, 0);
|
||||
#if defined(DXX_BUILD_DESCENT_II)
|
||||
//maybe we've gone on to the next level. if so, bail!
|
||||
if (Current_level_num != old_level)
|
||||
|
|
|
@ -483,15 +483,15 @@ int check_trigger_sub(object &plrobj, const trgnum_t trigger_num, int pnum,int s
|
|||
|
||||
//-----------------------------------------------------------------
|
||||
// Checks for a trigger whenever an object hits a trigger side.
|
||||
void check_trigger(const vcsegptridx_t seg, short side, const vcobjptridx_t objnum, int shot)
|
||||
void check_trigger(const vcsegptridx_t seg, short side, object &plrobj, const vcobjptridx_t objnum, int shot)
|
||||
{
|
||||
if ((Game_mode & GM_MULTI) && (get_local_player().connected != CONNECT_PLAYING)) // as a host we may want to handle triggers for our clients. so this function may be called when we are not playing.
|
||||
return;
|
||||
|
||||
#if defined(DXX_BUILD_DESCENT_I)
|
||||
if (objnum == get_local_player().objnum)
|
||||
if (objnum == &plrobj)
|
||||
#elif defined(DXX_BUILD_DESCENT_II)
|
||||
if (objnum == get_local_player().objnum || (objnum->type == OBJ_ROBOT && Robot_info[get_robot_id(objnum)].companion))
|
||||
if (objnum == &plrobj || (objnum->type == OBJ_ROBOT && Robot_info[get_robot_id(objnum)].companion))
|
||||
#endif
|
||||
{
|
||||
|
||||
|
@ -510,7 +510,7 @@ void check_trigger(const vcsegptridx_t seg, short side, const vcobjptridx_t objn
|
|||
if (trigger_num == trigger_none)
|
||||
return;
|
||||
|
||||
if (check_trigger_sub(get_local_plrobj(), trigger_num, Player_num,shot))
|
||||
if (check_trigger_sub(plrobj, trigger_num, Player_num,shot))
|
||||
return;
|
||||
|
||||
#if defined(DXX_BUILD_DESCENT_I)
|
||||
|
|
Loading…
Reference in a new issue