Added Yamagi cheat cvars

"g_machinegun_norecoil" and "g_swap_speed"
This commit is contained in:
Jaime Moreira 2023-07-05 16:18:13 -04:00
parent e3743c5b2c
commit 82f72cca77
4 changed files with 18 additions and 10 deletions

View file

@ -46,6 +46,8 @@ cvar_t *gamedir;
cvar_t *sv_cheats; cvar_t *sv_cheats;
cvar_t *aimfix; cvar_t *aimfix;
cvar_t *g_machinegun_norecoil;
cvar_t *g_swap_speed;
void SpawnEntities (char *mapname, char *entities, char *spawnpoint); void SpawnEntities (char *mapname, char *entities, char *spawnpoint);
void ClientThink (edict_t *ent, usercmd_t *cmd); void ClientThink (edict_t *ent, usercmd_t *cmd);
@ -357,4 +359,3 @@ void G_RunFrame (void)
// build the playerstate_t structures for all players // build the playerstate_t structures for all players
ClientEndServerFrames (); ClientEndServerFrames ();
} }

View file

@ -610,6 +610,8 @@ extern cvar_t *grenadeammo;
extern cvar_t *bettyammo; extern cvar_t *bettyammo;
extern cvar_t *aimfix; extern cvar_t *aimfix;
extern cvar_t *g_machinegun_norecoil;
extern cvar_t *g_swap_speed;
#define world (&g_edicts[0]) #define world (&g_edicts[0])

View file

@ -499,6 +499,7 @@ A generic function to handle the basics of weapon thinking
void Weapon_Generic (edict_t *ent, int FRAME_ACTIVATE_LAST, int FRAME_FIRE_LAST, int FRAME_IDLE_LAST, int FRAME_DEACTIVATE_LAST, int *pause_frames, int *fire_frames, void (*fire)(edict_t *ent)) void Weapon_Generic (edict_t *ent, int FRAME_ACTIVATE_LAST, int FRAME_FIRE_LAST, int FRAME_IDLE_LAST, int FRAME_DEACTIVATE_LAST, int *pause_frames, int *fire_frames, void (*fire)(edict_t *ent))
{ {
int n; int n;
const unsigned short int change_speed = (g_swap_speed->value > 0)?(unsigned short int)g_swap_speed->value:1;
if (!ent) if (!ent)
{ {
@ -507,35 +508,36 @@ void Weapon_Generic (edict_t *ent, int FRAME_ACTIVATE_LAST, int FRAME_FIRE_LAST,
if (ent->client->weaponstate == WEAPON_DROPPING) if (ent->client->weaponstate == WEAPON_DROPPING)
{ {
if (ent->client->ps.gunframe == FRAME_DEACTIVATE_LAST) if (ent->client->ps.gunframe >= FRAME_DEACTIVATE_LAST - change_speed + 1)
{ {
ChangeWeapon (ent); ChangeWeapon (ent);
return; return;
} }
else if ( (FRAME_DEACTIVATE_LAST - FRAME_DEACTIVATE_FIRST) >= 4 ) else if ( (FRAME_DEACTIVATE_LAST - FRAME_DEACTIVATE_FIRST) >= (4 * change_speed) )
{ {
unsigned short int remainder = FRAME_DEACTIVATE_LAST - ent->client->ps.gunframe; unsigned short int remainder = FRAME_DEACTIVATE_LAST - ent->client->ps.gunframe;
// "if (remainder == 4)" at change_speed == 1 // "if (remainder == 4)" at change_speed == 1
if (remainder == 4) if ( ( remainder <= (4 * change_speed) )
&& ( remainder > (3 * change_speed) ) )
{ {
Change_Weap_Animation(ent); Change_Weap_Animation(ent);
} }
} }
ent->client->ps.gunframe++; ent->client->ps.gunframe += change_speed;
return; return;
} }
if (ent->client->weaponstate == WEAPON_ACTIVATING) if (ent->client->weaponstate == WEAPON_ACTIVATING)
{ {
if (ent->client->ps.gunframe == FRAME_ACTIVATE_LAST) if (ent->client->ps.gunframe >= FRAME_ACTIVATE_LAST - change_speed + 1)
{ {
ent->client->weaponstate = WEAPON_READY; ent->client->weaponstate = WEAPON_READY;
ent->client->ps.gunframe = FRAME_IDLE_FIRST; ent->client->ps.gunframe = FRAME_IDLE_FIRST;
return; return;
} }
ent->client->ps.gunframe++; ent->client->ps.gunframe += change_speed;
return; return;
} }
@ -543,7 +545,7 @@ void Weapon_Generic (edict_t *ent, int FRAME_ACTIVATE_LAST, int FRAME_FIRE_LAST,
{ {
ent->client->weaponstate = WEAPON_DROPPING; ent->client->weaponstate = WEAPON_DROPPING;
ent->client->ps.gunframe = FRAME_DEACTIVATE_FIRST; ent->client->ps.gunframe = FRAME_DEACTIVATE_FIRST;
if ( (FRAME_DEACTIVATE_LAST - FRAME_DEACTIVATE_FIRST) < 4 ) if ( (FRAME_DEACTIVATE_LAST - FRAME_DEACTIVATE_FIRST) < (4 * change_speed) )
{ {
Change_Weap_Animation(ent); Change_Weap_Animation(ent);
} }
@ -1184,11 +1186,13 @@ void Machinegun_Fire (edict_t *ent)
ent->client->kick_angles[0] = ent->client->machinegun_shots * -1.5; ent->client->kick_angles[0] = ent->client->machinegun_shots * -1.5;
// raise the gun as it is firing // raise the gun as it is firing
if (!deathmatch->value) if (!(deathmatch->value || g_machinegun_norecoil->value))
{ {
ent->client->machinegun_shots++; ent->client->machinegun_shots++;
if (ent->client->machinegun_shots > 9) if (ent->client->machinegun_shots > 9)
{
ent->client->machinegun_shots = 9; ent->client->machinegun_shots = 9;
}
} }
// get start / end positions // get start / end positions

View file

@ -236,6 +236,8 @@ InitGame(void)
/* others */ /* others */
aimfix = gi.cvar("aimfix", "0", CVAR_ARCHIVE); aimfix = gi.cvar("aimfix", "0", CVAR_ARCHIVE);
g_machinegun_norecoil = gi.cvar("g_machinegun_norecoil", "0", CVAR_ARCHIVE);
g_swap_speed = gi.cvar("g_swap_speed", "1", 0);
/* items */ /* items */
InitItems (); InitItems ();
@ -1156,4 +1158,3 @@ ReadLevel(const char *filename)
} }
} }
} }