summaryrefslogtreecommitdiff
path: root/src/strife/g_game.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/strife/g_game.c')
-rw-r--r--src/strife/g_game.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/src/strife/g_game.c b/src/strife/g_game.c
index 8d074a1f..e0c0ae27 100644
--- a/src/strife/g_game.c
+++ b/src/strife/g_game.c
@@ -289,7 +289,7 @@ static boolean WeaponSelectable(weapontype_t weapon)
static int G_NextWeapon(int direction)
{
weapontype_t weapon;
- int i;
+ int start_i, i;
// Find index in the table.
@@ -311,12 +311,12 @@ static int G_NextWeapon(int direction)
}
// Switch weapon.
-
+ start_i = i;
do
{
i += direction;
i = (i + arrlen(weapon_order_table)) % arrlen(weapon_order_table);
- } while (!WeaponSelectable(weapon_order_table[i].weapon));
+ } while (i != start_i && !WeaponSelectable(weapon_order_table[i].weapon));
return weapon_order_table[i].weapon_num;
}
@@ -511,12 +511,11 @@ void G_BuildTiccmd (ticcmd_t* cmd, int maketic)
// next_weapon variable is set to change weapons when
// we generate a ticcmd. Choose a new weapon.
- if (next_weapon != 0)
+ if (gamestate == GS_LEVEL && next_weapon != 0)
{
i = G_NextWeapon(next_weapon);
cmd->buttons |= BT_CHANGE;
cmd->buttons |= i << BT_WEAPONSHIFT;
- next_weapon = 0;
}
else
{
@@ -535,6 +534,8 @@ void G_BuildTiccmd (ticcmd_t* cmd, int maketic)
}
}
+ next_weapon = 0;
+
// mouse
if (mousebuttons[mousebforward])
{