diff --git a/src/lua_playerlib.c b/src/lua_playerlib.c index 9dbfa4d07..5b6251e80 100644 --- a/src/lua_playerlib.c +++ b/src/lua_playerlib.c @@ -461,15 +461,16 @@ static int player_set(lua_State *L) else if (fastcmp(field,"viewrollangle")) plr->viewrollangle = luaL_checkangle(L, 3); else if (fastcmp(field,"aiming")) { + UINT8 i; plr->aiming = luaL_checkangle(L, 3); - if (plr == &players[consoleplayer]) - localaiming[0] = plr->aiming; - else if (plr == &players[displayplayers[1]]) - localaiming[1] = plr->aiming; - else if (plr == &players[displayplayers[2]]) - localaiming[2] = plr->aiming; - else if (plr == &players[displayplayers[3]]) - localaiming[3] = plr->aiming; + for (i = 0; i <= r_splitscreen; i++) + { + if (plr == &players[displayplayers[i]]) + { + localaiming[i] = plr->aiming; + break; + } + } } else if (fastcmp(field,"drawangle")) plr->drawangle = luaL_checkangle(L, 3); diff --git a/src/p_inter.c b/src/p_inter.c index 4ad79dbc4..00171e758 100644 --- a/src/p_inter.c +++ b/src/p_inter.c @@ -1161,6 +1161,8 @@ void P_KillMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source, UINT8 damaget // if a player avatar dies... if (target->player) { + UINT8 i; + target->flags &= ~(MF_SOLID|MF_SHOOTABLE); // does not block P_UnsetThingPosition(target); target->flags |= MF_NOBLOCKMAP|MF_NOCLIP|MF_NOCLIPHEIGHT|MF_NOGRAVITY; @@ -1176,14 +1178,17 @@ void P_KillMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source, UINT8 damaget // switch view prior to dying if (automapactive) AM_Stop(); - - //added : 22-02-98: recenter view for next life... - localaiming[0] = 0; } - if (target->player == &players[displayplayers[1]]) localaiming[1] = 0; - if (target->player == &players[displayplayers[2]]) localaiming[2] = 0; - if (target->player == &players[displayplayers[3]]) localaiming[3] = 0; + //added : 22-02-98: recenter view for next life... + for (i = 0; i <= r_splitscreen; i++) + { + if (target->player == &players[displayplayers[i]]) + { + localaiming[i] = 0; + break; + } + } if ((gametyperules & GTR_BUMPERS)) K_CheckBumpers(); diff --git a/src/p_local.h b/src/p_local.h index a010cd37b..a8ec9bca9 100644 --- a/src/p_local.h +++ b/src/p_local.h @@ -151,7 +151,6 @@ boolean P_IsDisplayPlayer(player_t *player); void P_SetPlayerAngle(player_t *player, angle_t angle); angle_t P_GetLocalAngle(player_t *player); -void P_SetLocalAngle(player_t *player, angle_t angle); void P_ForceLocalAngle(player_t *player, angle_t angle); boolean P_PlayerFullbright(player_t *player); diff --git a/src/p_user.c b/src/p_user.c index 1268a7a5f..093c45064 100644 --- a/src/p_user.c +++ b/src/p_user.c @@ -2037,11 +2037,11 @@ static void P_3dMovement(player_t *player) // static void P_UpdatePlayerAngle(player_t *player) { - ticcmd_t *cmd = &player->cmd; - angle_t angleChange = K_GetKartTurnValue(player, cmd->turning) << TICCMD_REDUCE; + angle_t angleChange = K_GetKartTurnValue(player, player->cmd.turning) << TICCMD_REDUCE; + UINT8 i; - player->angleturn += angleChange; - P_SetLocalAngle(player, P_GetLocalAngle(player) + angleChange); + P_SetPlayerAngle(player, player->angleturn + angleChange); + player->mo->angle = player->angleturn; if (!cv_allowmlook.value || player->spectator == false) { @@ -2049,11 +2049,18 @@ static void P_UpdatePlayerAngle(player_t *player) } else { - player->aiming += (cmd->aiming << TICCMD_REDUCE); + player->aiming += (player->cmd.aiming << TICCMD_REDUCE); player->aiming = G_ClipAimingPitch((INT32 *)&player->aiming); } - player->mo->angle = player->angleturn; + for (i = 0; i <= r_splitscreen; i++) + { + if (player == &players[displayplayers[i]]) + { + localaiming[i] = player->aiming; + break; + } + } } // @@ -4653,17 +4660,8 @@ void P_PlayerAfterThink(player_t *player) void P_SetPlayerAngle(player_t *player, angle_t angle) { - angle_t delta = angle - player->angleturn; - - P_ForceLocalAngle(player, P_GetLocalAngle(player) + delta); - player->angleturn += delta; -} - -void P_SetLocalAngle(player_t *player, angle_t angle) -{ - angle_t delta = (angle - P_GetLocalAngle(player)); - - P_ForceLocalAngle(player, P_GetLocalAngle(player) + delta); + P_ForceLocalAngle(player, angle); + player->angleturn = angle; } angle_t P_GetLocalAngle(player_t *player) @@ -4672,9 +4670,9 @@ angle_t P_GetLocalAngle(player_t *player) // (hint: they have separate variables for all of this shit instead of arrays) UINT8 i; - for (i = 0; i <= splitscreen; i++) + for (i = 0; i <= r_splitscreen; i++) { - if (player == &players[g_localplayers[i]]) + if (player == &players[displayplayers[i]]) return localangle[i]; } @@ -4687,9 +4685,9 @@ void P_ForceLocalAngle(player_t *player, angle_t angle) angle = angle & ~UINT16_MAX; - for (i = 0; i <= splitscreen; i++) + for (i = 0; i <= r_splitscreen; i++) { - if (player == &players[g_localplayers[i]]) + if (player == &players[displayplayers[i]]) { localangle[i] = angle; break;