Skip to content

Commit

Permalink
Merge branch 'master' into short-hash
Browse files Browse the repository at this point in the history
# Conflicts:
#	codemp/game/g_cvar.c
#	codemp/game/g_main.c
#	codemp/game/g_xcvar.h
  • Loading branch information
taysta committed Oct 29, 2023
2 parents 58908b7 + 5304467 commit 1b6fbf0
Show file tree
Hide file tree
Showing 15 changed files with 142 additions and 68 deletions.
2 changes: 1 addition & 1 deletion codemp/cgame/cg_draw.c
Original file line number Diff line number Diff line change
Expand Up @@ -4275,7 +4275,7 @@ static float CG_DrawEnemyInfo ( float y )
clientNum = cgs.duelWinner;
}

if ( clientNum >= MAX_CLIENTS || !(&cgs.clientinfo[ clientNum ]) )
if ( clientNum < 0 || clientNum >= MAX_CLIENTS || !cgs.clientinfo[clientNum].infoValid )
{
return y;
}
Expand Down
11 changes: 8 additions & 3 deletions codemp/cgame/cg_main.c
Original file line number Diff line number Diff line change
Expand Up @@ -1901,6 +1901,9 @@ CG_ConfigString
=================
*/
const char *CG_ConfigString( int index ) {
// don't read configstrings before initialisation
assert( cgs.gameState.dataCount != 0 );

if ( index < 0 || index >= MAX_CONFIGSTRINGS ) {
trap->Error( ERR_DROP, "CG_ConfigString: bad index: %i", index );
}
Expand Down Expand Up @@ -2995,6 +2998,9 @@ Ghoul2 Insert End
memset( cg_weapons, 0, sizeof(cg_weapons) );
memset( cg_dueltypes, 0, sizeof(cg_dueltypes) );//JAPRO - Clientside - Fullforce Duels

// get the gamestate from the client system
trap->GetGameState( &cgs.gameState );

cg.clientNum = clientNum;

cgs.processedSnapshotNum = serverMessageNum;
Expand Down Expand Up @@ -3127,9 +3133,6 @@ Ghoul2 Insert End
cgs.screenYScale = cgs.glconfig.vidHeight / SCREEN_HEIGHT;
UI_Set2DRatio();

// get the gamestate from the client system
trap->GetGameState( &cgs.gameState );

CG_TransitionPermanent(); //rwwRMG - added

// check version
Expand Down Expand Up @@ -3220,6 +3223,8 @@ Ghoul2 Insert End
cg.distanceCull = trap->R_GetDistanceCull();

CG_ParseEntitiesFromString();

BG_FixSaberMoveData();
}

//makes sure returned string is in localized format
Expand Down
5 changes: 5 additions & 0 deletions codemp/cgame/cg_servercmds.c
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ along with this program; if not, see <http://www.gnu.org/licenses/>.
// be a valid snapshot this frame

#include "cg_local.h"
#include "game/bg_public.h"
#include "ui/menudef.h"
#include "ghoul2/G2.h"
#include "ui/ui_public.h"
Expand Down Expand Up @@ -1026,6 +1027,10 @@ static void CG_ConfigStringModified( void ) {
else if ( num == CS_SHADERSTATE ) {
CG_ShaderStateChanged();
}
else if ( num == CS_LEGACY_FIXES ) {
// LEGACYFIX_SABERMOVEDATA may have changed
BG_FixSaberMoveData();
}
else if ( num >= CS_LIGHT_STYLES && num < CS_LIGHT_STYLES + (MAX_LIGHT_STYLES * 3))
{
CG_SetLightstyle(num - CS_LIGHT_STYLES);
Expand Down
2 changes: 1 addition & 1 deletion codemp/game/NPC_AI_MineMonster.c
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,7 @@ void MineMonster_Patrol( void )
}

//rwwFIXMEFIXME: Care about all clients, not just client 0
//OJKFIXME: clietnum 0
//OJKFIXME: clientnum 0
VectorSubtract( g_entities[0].r.currentOrigin, NPCS.NPC->r.currentOrigin, dif );

if ( VectorLengthSquared( dif ) < 256 * 256 )
Expand Down
6 changes: 3 additions & 3 deletions codemp/game/NPC_combat.c
Original file line number Diff line number Diff line change
Expand Up @@ -1494,7 +1494,7 @@ gentity_t *NPC_PickEnemy( gentity_t *closestTo, int enemyTeam, qboolean checkVis
minVis = VIS_360;
}

//OJKFIXME: care about clients other than 0
//OJKFIXME: clientnum 0
//OJKFIXME: choice[] is not size checked?
if( findPlayersFirst )
{//try to find a player first
Expand Down Expand Up @@ -2178,7 +2178,7 @@ qboolean NPC_EvaluateShot( int hit, qboolean glassOK )
return qfalse;
}

if ( hit == NPCS.NPC->enemy->s.number || (&g_entities[hit] != NULL && (g_entities[hit].r.svFlags&SVF_GLASS_BRUSH)) )
if ( hit == NPCS.NPC->enemy->s.number || (g_entities[hit].inuse && (g_entities[hit].r.svFlags&SVF_GLASS_BRUSH)) )
{//can hit enemy or will hit glass, so shoot anyway
return qtrue;
}
Expand Down Expand Up @@ -2452,7 +2452,7 @@ float IdealDistance ( gentity_t *self )
case WP_THERMAL:
ideal += 50;
break;

case WP_SABER:
case WP_BRYAR_PISTOL:
// case WP_BLASTER_PISTOL:
Expand Down
20 changes: 0 additions & 20 deletions codemp/game/bg_g2_utils.c
Original file line number Diff line number Diff line change
Expand Up @@ -42,26 +42,14 @@ void BG_AttachToRancor( void *ghoul2, float rancYaw, vec3_t rancOrigin, int time
// Getting the bolt here
if ( inMouth )
{//in mouth
#if defined(_GAME)
boltIndex = trap->G2API_AddBolt(ghoul2, 0, "jaw_bone");
#elif defined(_CGAME)
boltIndex = trap->G2API_AddBolt(ghoul2, 0, "jaw_bone");
#endif
}
else
{//in right hand
#if defined(_GAME)
boltIndex = trap->G2API_AddBolt(ghoul2, 0, "*r_hand");
#elif defined(_CGAME)
boltIndex = trap->G2API_AddBolt(ghoul2, 0, "*r_hand");
#endif
}
VectorSet( rancAngles, 0, rancYaw, 0 );
#if defined(_GAME)
trap->G2API_GetBoltMatrix( ghoul2, 0, boltIndex, &boltMatrix, rancAngles, rancOrigin, time, modelList, modelScale );
#elif defined(_CGAME)
trap->G2API_GetBoltMatrix( ghoul2, 0, boltIndex, &boltMatrix, rancAngles, rancOrigin, time, modelList, modelScale );
#endif
// Storing ent position, bolt position, and bolt axis
if ( out_origin )
{
Expand Down Expand Up @@ -112,11 +100,7 @@ void BG_AttachToRancor( void *ghoul2, float rancYaw, vec3_t rancOrigin, int time
#define MAX_VARIANTS 8
qboolean BG_GetRootSurfNameWithVariant( void *ghoul2, const char *rootSurfName, char *returnSurfName, int returnSize )
{
#if defined(_GAME)
if ( !ghoul2 || !trap->G2API_GetSurfaceRenderStatus( ghoul2, 0, rootSurfName ) )
#elif defined(_CGAME)
if ( !ghoul2 || !trap->G2API_GetSurfaceRenderStatus( ghoul2, 0, rootSurfName ) )
#endif
{//see if the basic name without variants is on
Q_strncpyz( returnSurfName, rootSurfName, returnSize );
return qtrue;
Expand All @@ -127,11 +111,7 @@ qboolean BG_GetRootSurfNameWithVariant( void *ghoul2, const char *rootSurfName,
for ( i = 0; i < MAX_VARIANTS; i++ )
{
Com_sprintf( returnSurfName, returnSize, "%s%c", rootSurfName, 'a'+i );
#if defined(_GAME)
if ( !trap->G2API_GetSurfaceRenderStatus( ghoul2, 0, returnSurfName ) )
#elif defined(_CGAME)
if ( !trap->G2API_GetSurfaceRenderStatus( ghoul2, 0, returnSurfName ) )
#endif
{
return qtrue;
}
Expand Down
3 changes: 1 addition & 2 deletions codemp/game/bg_misc.c
Original file line number Diff line number Diff line change
Expand Up @@ -2289,8 +2289,7 @@ qboolean BG_CanItemBeGrabbed( int gametype, const entityState_t *ent, const play
{//force powers and saber only
if ( item->giType != IT_TEAM //not a flag
&& item->giType != IT_ARMOR//not shields
&& (item->giType != IT_WEAPON
|| item->giTag != WP_SABER)//not a saber
&& (item->giType != IT_WEAPON || item->giTag != WP_SABER)//not a saber
&& (item->giType != IT_HOLDABLE || item->giTag != HI_SEEKER)//not a seeker
&& (item->giType != IT_POWERUP || item->giTag == PW_YSALAMIRI) )//not a force pick-up
{
Expand Down
20 changes: 19 additions & 1 deletion codemp/game/bg_public.h
Original file line number Diff line number Diff line change
Expand Up @@ -111,7 +111,7 @@ along with this program; if not, see <http://www.gnu.org/licenses/>.
#define CS_FLAGSTATUS 23 // string indicating flag status in CTF
#define CS_SHADERSTATE 24
#define CS_BOTINFO 25

#define CS_LEGACY_FIXES 26
#define CS_ITEMS 27 // string of 0's and 1's that tell which items are present

#define CS_CLIENT_JEDIMASTER 28 // current jedi master
Expand Down Expand Up @@ -156,6 +156,22 @@ Ghoul2 Insert End
#error overflow: (CS_MAX) > MAX_CONFIGSTRINGS
#endif

typedef enum legacyFixes_e {
LEGACYFIX_SABERMOVEDATA = 0,
/*
m m ""# " m m
# # mmm m m # mmm mmm mm#mm mmm m mm #
#mmmm# #" # "m m" # # # " # #" # #" # #
# # #"""" #m# # # """m # #"""" # # "
# # "#mm" "# # "mm mm#mm "mmm" "mm "#mm" # # #
m" "
""
Forks of OpenJK should NOT add to or modify the legacy fixes values
Removal, replacement or adding of new flags might lead to incompatibilities
Forks should define their own configstring or serverinfo cvar instead of modifying this
*/
} legacyFixes_t;

typedef enum {
G2_MODELPART_HEAD = 10,
G2_MODELPART_WAIST,
Expand Down Expand Up @@ -1848,6 +1864,8 @@ qboolean BG_InDeathAnim( int anim );
qboolean BG_InSaberLockOld( int anim );
qboolean BG_InSaberLock( int anim );

void BG_FixSaberMoveData( void );

void BG_SaberStartTransAnim( int clientNum, int saberAnimLevel, int weapon, int anim, float *animSpeed, int broken );

void BG_ForcePowerDrain( playerState_t *ps, forcePowers_t forcePower, int overrideAmt );
Expand Down
64 changes: 43 additions & 21 deletions codemp/game/bg_saber.c
Original file line number Diff line number Diff line change
Expand Up @@ -26,11 +26,11 @@ along with this program; if not, see <http://www.gnu.org/licenses/>.
#include "bg_local.h"
#include "w_saber.h"

//JAPRO - Serverside - Fullforce Duels - Start
#ifdef _CGAME
extern int cg_dueltypes[MAX_CLIENTS];
#if defined(_GAME)
#include "g_local.h" // for cvars
#elif defined(_CGAME)
#include "cgame/cg_local.h" // for configstrings
#endif
//JAPRO - Serverside - Fullforce Duels - End

extern qboolean BG_SabersOff( playerState_t *ps );
saberInfo_t *BG_MySaber( int clientNum, int saberNum );
Expand Down Expand Up @@ -325,30 +325,23 @@ saberMoveData_t saberMoveData[LS_MOVE_MAX] = {// NB:randomized
{"BParry Top", BOTH_H1_S1_T_, Q_T, Q_B, AFLAG_ACTIVE, 50, BLK_NO, LS_READY, LS_READY, 150 }, // LS_PARRY_UP,
{"BParry UR", BOTH_H1_S1_TR, Q_TR, Q_BL, AFLAG_ACTIVE, 50, BLK_NO, LS_READY, LS_READY, 150 }, // LS_PARRY_UR,
{"BParry UL", BOTH_H1_S1_TL, Q_TL, Q_BR, AFLAG_ACTIVE, 50, BLK_NO, LS_READY, LS_READY, 150 }, // LS_PARRY_UL,
{"BParry LR", BOTH_H1_S1_BR, Q_BL, Q_TR, AFLAG_ACTIVE, 50, BLK_NO, LS_READY, LS_READY, 150 }, // LS_PARRY_LR,
{"BParry LR", BOTH_H1_S1_BL, Q_BL, Q_TR, AFLAG_ACTIVE, 50, BLK_NO, LS_READY, LS_READY, 150 }, // LS_PARRY_LR,
{"BParry Bot", BOTH_H1_S1_B_, Q_B, Q_T, AFLAG_ACTIVE, 50, BLK_NO, LS_READY, LS_READY, 150 }, // LS_PARRY_LR
{"BParry LL", BOTH_H1_S1_BL, Q_BR, Q_TL, AFLAG_ACTIVE, 50, BLK_NO, LS_READY, LS_READY, 150 }, // LS_PARRY_LL
//{"BParry LR", BOTH_H1_S1_BL, Q_BL, Q_TR, AFLAG_ACTIVE, 50, BLK_NO, LS_READY, LS_READY, 150 }, // LS_PARRY_LR,
//{"BParry Bot", BOTH_H1_S1_B_, Q_B, Q_T, AFLAG_ACTIVE, 50, BLK_NO, LS_READY, LS_READY, 150 }, // LS_PARRY_LL
//{"BParry LL", BOTH_H1_S1_BR, Q_BR, Q_TL, AFLAG_ACTIVE, 50, BLK_NO, LS_READY, LS_READY, 150 }, // LS_PARRY_LL
{"BParry LL", BOTH_H1_S1_BR, Q_BR, Q_TL, AFLAG_ACTIVE, 50, BLK_NO, LS_READY, LS_READY, 150 }, // LS_PARRY_LL

// Knockaways
{"Knock Top", BOTH_K1_S1_T_, Q_R, Q_T, AFLAG_ACTIVE, 50, BLK_WIDE, LS_R_BL2TR, LS_T1_T__BR, 150 }, // LS_PARRY_UP,
{"Knock UR", BOTH_K1_S1_TR, Q_R, Q_TR, AFLAG_ACTIVE, 50, BLK_WIDE, LS_R_BL2TR, LS_T1_TR__R, 150 }, // LS_PARRY_UR,
{"Knock UL", BOTH_K1_S1_TL, Q_R, Q_TL, AFLAG_ACTIVE, 50, BLK_WIDE, LS_R_BR2TL, LS_T1_TL__L, 150 }, // LS_PARRY_UL,
{"Knock LR", BOTH_K1_S1_BR, Q_R, Q_BL, AFLAG_ACTIVE, 50, BLK_WIDE, LS_R_TL2BR, LS_T1_BL_TL, 150 }, // LS_PARRY_LR,
{"Knock LL", BOTH_K1_S1_BL, Q_R, Q_BR, AFLAG_ACTIVE, 50, BLK_WIDE, LS_R_TR2BL, LS_T1_BR_TR, 150 }, // LS_PARRY_LL
//{"Knock LR", BOTH_K1_S1_BL, Q_R, Q_BL, AFLAG_ACTIVE, 50, BLK_WIDE, LS_R_TL2BR, LS_T1_BL_TL, 150 }, // LS_PARRY_LR,
//{"Knock LL", BOTH_K1_S1_BR, Q_R, Q_BR, AFLAG_ACTIVE, 50, BLK_WIDE, LS_R_TR2BL, LS_T1_BR_TR, 150 }, // LS_PARRY_LL
{"Knock LR", BOTH_K1_S1_BL, Q_R, Q_BL, AFLAG_ACTIVE, 50, BLK_WIDE, LS_R_TL2BR, LS_T1_BL_TL, 150 }, // LS_PARRY_LR,
{"Knock LL", BOTH_K1_S1_BR, Q_R, Q_BR, AFLAG_ACTIVE, 50, BLK_WIDE, LS_R_TR2BL, LS_T1_BR_TR, 150 }, // LS_PARRY_LL

// Parry
{"Parry Top", BOTH_P1_S1_T_, Q_R, Q_T, AFLAG_ACTIVE, 50, BLK_WIDE, LS_R_BL2TR, LS_A_T2B, 150 }, // LS_PARRY_UP,
{"Parry UR", BOTH_P1_S1_TR, Q_R, Q_TL, AFLAG_ACTIVE, 50, BLK_WIDE, LS_R_BL2TR, LS_A_TR2BL, 150 }, // LS_PARRY_UR,
{"Parry UL", BOTH_P1_S1_TL, Q_R, Q_TR, AFLAG_ACTIVE, 50, BLK_WIDE, LS_R_BR2TL, LS_A_TL2BR, 150 }, // LS_PARRY_UL,
{"Parry LR", BOTH_P1_S1_BR, Q_R, Q_BR, AFLAG_ACTIVE, 50, BLK_WIDE, LS_R_TL2BR, LS_A_BR2TL, 150 }, // LS_PARRY_LR,
{"Parry LL", BOTH_P1_S1_BL, Q_R, Q_BL, AFLAG_ACTIVE, 50, BLK_WIDE, LS_R_TR2BL, LS_A_BL2TR, 150 }, // LS_PARRY_LL
//{"Parry LR", BOTH_P1_S1_BL, Q_R, Q_BR, AFLAG_ACTIVE, 50, BLK_WIDE, LS_R_TL2BR, LS_A_BR2TL, 150 }, // LS_PARRY_LR,
//{"Parry LL", BOTH_P1_S1_BR, Q_R, Q_BL, AFLAG_ACTIVE, 50, BLK_WIDE, LS_R_TR2BL, LS_A_BL2TR, 150 }, // LS_PARRY_LL
{"Parry LR", BOTH_P1_S1_BL, Q_R, Q_BR, AFLAG_ACTIVE, 50, BLK_WIDE, LS_R_TL2BR, LS_A_BR2TL, 150 }, // LS_PARRY_LR,
{"Parry LL", BOTH_P1_S1_BR, Q_R, Q_BL, AFLAG_ACTIVE, 50, BLK_WIDE, LS_R_TR2BL, LS_A_BL2TR, 150 }, // LS_PARRY_LL

// Reflecting a missile
{"Reflect Top", BOTH_P1_S1_T_, Q_R, Q_T, AFLAG_ACTIVE, 50, BLK_WIDE, LS_R_BL2TR, LS_A_T2B, 300 }, // LS_PARRY_UP,
Expand All @@ -358,6 +351,38 @@ saberMoveData_t saberMoveData[LS_MOVE_MAX] = {// NB:randomized
{"Reflect LL", BOTH_P1_S1_BL, Q_R, Q_BR, AFLAG_ACTIVE, 50, BLK_WIDE, LS_R_TL2BR, LS_A_BR2TL, 300 }, // LS_PARRY_LL,
};

void BG_FixSaberMoveData(void) {
#if defined(_GAME)
const qboolean doFix = !!g_fixSaberMoveData.integer;
#elif defined(_CGAME)
const char *cs = CG_ConfigString(CS_LEGACY_FIXES);
const uint32_t legacyFixes = strtoul(cs, NULL, 0);
const qboolean doFix = !!(legacyFixes & (1 << LEGACYFIX_SABERMOVEDATA));
#endif
saberMoveData_t *move;

for (move = saberMoveData; move - saberMoveData < ARRAY_LEN(saberMoveData); move++) {
if (!strcmp(move->name, "BParry LR")) {
move->animToUse = doFix ? BOTH_H1_S1_BR : BOTH_H1_S1_BL;
}
else if (!strcmp(move->name, "BParry LL")) {
move->animToUse = doFix ? BOTH_H1_S1_BL : BOTH_H1_S1_BR;
}
else if (!strcmp(move->name, "Knock LR")) {
move->animToUse = doFix ? BOTH_K1_S1_BR : BOTH_K1_S1_BL;
}
else if (!strcmp(move->name, "Knock LL")) {
move->animToUse = doFix ? BOTH_K1_S1_BL : BOTH_K1_S1_BR;
}
else if (!strcmp(move->name, "Parry LR")) {
move->animToUse = doFix ? BOTH_P1_S1_BR : BOTH_P1_S1_BL;
}
else if (!strcmp(move->name, "Parry LL")) {
move->animToUse = doFix ? BOTH_P1_S1_BL : BOTH_P1_S1_BR;
}
}
}

int transitionMove[Q_NUM_QUADS][Q_NUM_QUADS] =
{
{ LS_NONE, LS_T1_BR__R, LS_T1_BR_TR, LS_T1_BR_T_, LS_T1_BR_TL, LS_T1_BR__L, LS_T1_BR_BL, LS_NONE },
Expand Down Expand Up @@ -724,11 +749,8 @@ int PM_SaberAttackChainAngle( int move1, int move2 )

// Need to avoid nesting namespaces! .. have to move this up a ways... :/
#ifdef _GAME //including game headers on cgame is FORBIDDEN ^_^
#include "g_local.h"
extern void NPC_SetAnim(gentity_t *ent, int setAnimParts, int anim, int setAnimFlags);
extern gentity_t g_entities[];
#elif defined(_CGAME)
#include "cgame/cg_local.h" //ahahahahhahahaha@$!$!
#endif

qboolean PM_SaberKataDone(int curmove, int newmove)
Expand Down Expand Up @@ -1577,7 +1599,7 @@ qboolean PM_CanBackstab(void)

for (i=0; i<level.numPlayingClients; i++) {
cl = &level.clients[level.sortedClients[i]];

if (cl->ps.pm_type == PM_DEAD)
continue;
if (cl->sess.sessionTeam == TEAM_SPECTATOR)
Expand Down
3 changes: 3 additions & 0 deletions codemp/game/g_bot.c
Original file line number Diff line number Diff line change
Expand Up @@ -139,6 +139,9 @@ int G_GetMapTypeBits(char *type)
typeBits |= (1 << GT_TEAM);
typeBits |= (1 << GT_JEDIMASTER);
}
if( strstr( type, "team" ) ) {
typeBits |= (1 << GT_TEAM);
}
if( strstr( type, "holocron" ) ) {
typeBits |= (1 << GT_HOLOCRON);
}
Expand Down
6 changes: 6 additions & 0 deletions codemp/game/g_cmds.c
Original file line number Diff line number Diff line change
Expand Up @@ -3496,6 +3496,12 @@ void Cmd_CallTeamVote_f( gentity_t *ent ) {
char arg1[MAX_CVAR_VALUE_STRING] = {0};
char arg2[MAX_CVAR_VALUE_STRING] = {0};

if ( g_gametype.integer < GT_TEAM )
{
trap->SendServerCommand( ent-g_entities, "print \"Cannot call a team vote in a non-team gametype!\n\"" );
return;
}

if ( team == TEAM_RED )
cs_offset = 0;
else if ( team == TEAM_BLUE )
Expand Down
20 changes: 19 additions & 1 deletion codemp/game/g_cvar.c
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,10 @@ along with this program; if not, see <http://www.gnu.org/licenses/>.
===========================================================================
*/

#include <inttypes.h>

#include "g_local.h"
#include "game/bg_public.h"
#include "qcommon/game_version.h"

//
Expand Down Expand Up @@ -226,7 +229,7 @@ static void CVU_Jawarun(void) {
(g_emotesDisable.integer & (1 << E_JAWARUN)) ?
(jcinfo.integer |= JAPRO_CINFO_NOJAWARUN) : (jcinfo.integer &= ~JAPRO_CINFO_NOJAWARUN);
trap->Cvar_Set("jcinfo", va("%i", jcinfo.integer));
}
}

static void CVU_HighFPS(void) {
g_fixHighFPSAbuse.integer ?
Expand Down Expand Up @@ -472,6 +475,21 @@ static void CVU_Cosmetics(void) {
trap->SendServerCommand(-1, va("cosmetics \"%s\"", msg));
}

static void CVU_FixSaberMoveData(void) {
BG_FixSaberMoveData();

char sLegacyFixes[32];
trap->GetConfigstring(CS_LEGACY_FIXES, sLegacyFixes, sizeof(sLegacyFixes));

uint32_t legacyFixes = strtoul(sLegacyFixes, NULL, 0);
if (g_fixSaberMoveData.integer) {
legacyFixes |= (1 << LEGACYFIX_SABERMOVEDATA);
} else {
legacyFixes &= ~(1 << LEGACYFIX_SABERMOVEDATA);
}
trap->SetConfigstring(CS_LEGACY_FIXES, va("%" PRIu32, legacyFixes));
}

//
// Cvar table
//
Expand Down
Loading

0 comments on commit 1b6fbf0

Please sign in to comment.