diff --git a/.gitignore b/.gitignore
index 870c6ac..d351090 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,6 +2,7 @@
**/.gradle
.idea
*.iml
+*.bat
**/msvc/Debug*
**/msvc/Release*
**/msvc/*.sdf
@@ -14,7 +15,6 @@
**/msvc/*.pch
**/msvc/*.txt
**/msvc/.vs
-**/msvc/start*.bat
**/msvc/ipch
**/PublishPath*.txt
**/*.log
diff --git a/metamod/build.gradle b/metamod/build.gradle
index f619fb3..569c622 100644
--- a/metamod/build.gradle
+++ b/metamod/build.gradle
@@ -48,7 +48,7 @@ void setupToolchain(NativeBinarySpec b)
pchSourceSet: 'rmod_pch'
)
- cfg.extraLibs 'psapi.lib'
+ cfg.extraLibs 'psapi.lib', 'user32.lib'
cfg.singleDefines('_CRT_SECURE_NO_WARNINGS')
} else if (cfg instanceof GccToolchainConfig) {
cfg.compilerOptions.pchConfig = new GccToolchainConfig.PrecompilerHeaderOptions(
diff --git a/metamod/extra/example/include/hlsdk/dlls/extdll.h b/metamod/extra/example/include/hlsdk/dlls/extdll.h
index e81fcd1..f83e4b2 100644
--- a/metamod/extra/example/include/hlsdk/dlls/extdll.h
+++ b/metamod/extra/example/include/hlsdk/dlls/extdll.h
@@ -36,7 +36,6 @@
#include "archtypes.h"
#include "maintypes.h"
-#include "regamedll_common.h"
#ifdef _WIN32
#define WIN32_LEAN_AND_MEAN
diff --git a/metamod/extra/example/include/hlsdk/dlls/regamedll_common.h b/metamod/extra/example/include/hlsdk/dlls/regamedll_common.h
deleted file mode 100644
index 826b6de..0000000
--- a/metamod/extra/example/include/hlsdk/dlls/regamedll_common.h
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
-*
-* This program is free software; you can redistribute it and/or modify it
-* under the terms of the GNU General Public License as published by the
-* Free Software Foundation; either version 2 of the License, or (at
-* your option) any later version.
-*
-* This program is distributed in the hope that it will be useful, but
-* WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-* General Public License for more details.
-*
-* You should have received a copy of the GNU General Public License
-* along with this program; if not, write to the Free Software Foundation,
-* Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-*
-* In addition, as a special exception, the author gives permission to
-* link the code of this program with the Half-Life Game Engine ("HL
-* Engine") and Modified Game Libraries ("MODs") developed by Valve,
-* L.L.C ("Valve"). You must obey the GNU General Public License in all
-* respects for all of the code used other than the HL Engine and MODs
-* from Valve. If you modify this file, you may extend this exception
-* to your version of the file, but you are not obligated to do so. If
-* you do not wish to do so, delete this exception statement from your
-* version.
-*
-*/
-
-#pragma once
-
-#ifndef _WIN32
-#define _strlwr(p) for (int i = 0; p[i] != 0; i++) p[i] = tolower(p[i]);
-#endif
-
-#define Q_isspace isspace
-#define Q_isalnum isalnum
-#define Q_isalpha isalpha
-
-#define Q_malloc malloc
-#define Q_calloc calloc
-#define Q_alloca alloca
-#define Q_free free
-
-#define Q_min min
-#define Q_max max
-#define Q_clamp clamp
-#define Q_access _access
-#define Q_close _close
-#define Q_write _write
-#define Q_memset memset
-#define Q_memcpy memcpy
-#define Q_strlen strlen
-#define Q_memcmp memcmp
-#define Q_strcpy strcpy
-#define Q_strncpy strncpy
-#define Q_strrchr strrchr
-#define Q_strcat strcat
-#define Q_strncat strncat
-#define Q_strcmp strcmp
-#define Q_strncmp strncmp
-#define Q_sscanf sscanf
-#define Q_strdup _strdup
-#define Q_stricmp _stricmp
-#define Q_strnicmp _strnicmp
-#define Q_strstr strstr
-#define Q_strchr strchr
-#define Q_strrchr strrchr
-#define Q_strlwr _strlwr
-#define Q_sprintf sprintf
-#define Q_snprintf _snprintf
-#define Q_atoi atoi
-#define Q_atof atof
-#define Q_toupper toupper
-#define Q_memmove memmove
-#define Q_vsnprintf _vsnprintf
-#define Q_vsnwprintf _vsnwprintf
-#define Q_abs abs
-#define Q_fabs fabs
-#define Q_tan tan
-#define Q_atan atan
-#define Q_atan2 atan2
-#define Q_acos acos
-#define Q_cos cos
-#define Q_sin sin
-#define Q_pow pow
-#define Q_fmod fmod
-#define Q_fopen fopen
-#define Q_fwrite fwrite
-#define Q_fprintf fprintf
-#define Q_fclose fclose
-
-#ifdef REGAMEDLL_FIXES
-#define Q_sqrt M_sqrt
-#else
-#define Q_sqrt sqrt
-#endif
diff --git a/metamod/include/dlls/extdll.h b/metamod/include/dlls/extdll.h
index e81fcd1..f83e4b2 100644
--- a/metamod/include/dlls/extdll.h
+++ b/metamod/include/dlls/extdll.h
@@ -36,7 +36,6 @@
#include "archtypes.h"
#include "maintypes.h"
-#include "regamedll_common.h"
#ifdef _WIN32
#define WIN32_LEAN_AND_MEAN
diff --git a/metamod/include/dlls/regamedll_common.h b/metamod/include/dlls/regamedll_common.h
deleted file mode 100644
index 826b6de..0000000
--- a/metamod/include/dlls/regamedll_common.h
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
-*
-* This program is free software; you can redistribute it and/or modify it
-* under the terms of the GNU General Public License as published by the
-* Free Software Foundation; either version 2 of the License, or (at
-* your option) any later version.
-*
-* This program is distributed in the hope that it will be useful, but
-* WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-* General Public License for more details.
-*
-* You should have received a copy of the GNU General Public License
-* along with this program; if not, write to the Free Software Foundation,
-* Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-*
-* In addition, as a special exception, the author gives permission to
-* link the code of this program with the Half-Life Game Engine ("HL
-* Engine") and Modified Game Libraries ("MODs") developed by Valve,
-* L.L.C ("Valve"). You must obey the GNU General Public License in all
-* respects for all of the code used other than the HL Engine and MODs
-* from Valve. If you modify this file, you may extend this exception
-* to your version of the file, but you are not obligated to do so. If
-* you do not wish to do so, delete this exception statement from your
-* version.
-*
-*/
-
-#pragma once
-
-#ifndef _WIN32
-#define _strlwr(p) for (int i = 0; p[i] != 0; i++) p[i] = tolower(p[i]);
-#endif
-
-#define Q_isspace isspace
-#define Q_isalnum isalnum
-#define Q_isalpha isalpha
-
-#define Q_malloc malloc
-#define Q_calloc calloc
-#define Q_alloca alloca
-#define Q_free free
-
-#define Q_min min
-#define Q_max max
-#define Q_clamp clamp
-#define Q_access _access
-#define Q_close _close
-#define Q_write _write
-#define Q_memset memset
-#define Q_memcpy memcpy
-#define Q_strlen strlen
-#define Q_memcmp memcmp
-#define Q_strcpy strcpy
-#define Q_strncpy strncpy
-#define Q_strrchr strrchr
-#define Q_strcat strcat
-#define Q_strncat strncat
-#define Q_strcmp strcmp
-#define Q_strncmp strncmp
-#define Q_sscanf sscanf
-#define Q_strdup _strdup
-#define Q_stricmp _stricmp
-#define Q_strnicmp _strnicmp
-#define Q_strstr strstr
-#define Q_strchr strchr
-#define Q_strrchr strrchr
-#define Q_strlwr _strlwr
-#define Q_sprintf sprintf
-#define Q_snprintf _snprintf
-#define Q_atoi atoi
-#define Q_atof atof
-#define Q_toupper toupper
-#define Q_memmove memmove
-#define Q_vsnprintf _vsnprintf
-#define Q_vsnwprintf _vsnwprintf
-#define Q_abs abs
-#define Q_fabs fabs
-#define Q_tan tan
-#define Q_atan atan
-#define Q_atan2 atan2
-#define Q_acos acos
-#define Q_cos cos
-#define Q_sin sin
-#define Q_pow pow
-#define Q_fmod fmod
-#define Q_fopen fopen
-#define Q_fwrite fwrite
-#define Q_fprintf fprintf
-#define Q_fclose fclose
-
-#ifdef REGAMEDLL_FIXES
-#define Q_sqrt M_sqrt
-#else
-#define Q_sqrt sqrt
-#endif
diff --git a/metamod/msvc/PreBuild.bat b/metamod/msvc/PreBuild.bat
index a6d2798..8147e2f 100644
--- a/metamod/msvc/PreBuild.bat
+++ b/metamod/msvc/PreBuild.bat
@@ -10,6 +10,7 @@ set repodir=%~2
set old_version=
set version_major=0
set version_minor=0
+set version_maintenance=0
set version_modifed=
set commitSHA=
@@ -65,6 +66,7 @@ IF EXIST "%srcdir%\version.h" (
IF %%i==#define (
IF %%j==VERSION_MAJOR set version_major=%%k
IF %%j==VERSION_MINOR set version_minor=%%k
+ IF %%j==VERSION_MAINTENANCE set version_maintenance=%%k
)
)
) ELSE (
@@ -72,6 +74,7 @@ IF EXIST "%srcdir%\version.h" (
IF NOT [%%j] == [] (
IF %%i==majorVersion set version_major=%%j
IF %%i==minorVersion set version_minor=%%j
+ IF %%i==maintenanceVersion set version_maintenance=%%j
)
)
)
@@ -165,7 +168,7 @@ IF [%localChanged%]==[1] (
:: Now form full version string like 1.0.0.1
::
-set new_version=%version_major%.%version_minor%.%commitCount%%version_modifed%
+set new_version=%version_major%.%version_minor%.%version_maintenance%.%commitCount%%version_modifed%
::
:: Update appversion.h if version has changed or modifications/mixed revisions detected
@@ -194,8 +197,8 @@ echo.>>"%srcdir%\appversion.h"
echo // Version defines>>"%srcdir%\appversion.h"
echo #define APP_VERSION "%new_version%">>"%srcdir%\appversion.h"
->>"%srcdir%\appversion.h" echo #define APP_VERSION_C %version_major%,%version_minor%,%commitCount%
-echo #define APP_VERSION_STRD "%version_major%.%version_minor%.%commitCount%">>"%srcdir%\appversion.h"
+>>"%srcdir%\appversion.h" echo #define APP_VERSION_C %version_major%,%version_minor%,%version_maintenance%,%commitCount%
+echo #define APP_VERSION_STRD "%version_major%.%version_minor%.%version_maintenance%.%commitCount%">>"%srcdir%\appversion.h"
echo #define APP_VERSION_FLAGS 0x0L>>"%srcdir%\appversion.h"
echo.>>"%srcdir%\appversion.h"
diff --git a/metamod/msvc/metamod.vcxproj b/metamod/msvc/metamod.vcxproj
index f96f00c..07f6db0 100644
--- a/metamod/msvc/metamod.vcxproj
+++ b/metamod/msvc/metamod.vcxproj
@@ -206,14 +206,15 @@
-
+
+
+
-
Create
Create
@@ -222,6 +223,7 @@
+
@@ -239,9 +241,11 @@
-
+
+
+
@@ -253,6 +257,7 @@
+
diff --git a/metamod/msvc/metamod.vcxproj.filters b/metamod/msvc/metamod.vcxproj.filters
index a6cf037..3d9ff5a 100644
--- a/metamod/msvc/metamod.vcxproj.filters
+++ b/metamod/msvc/metamod.vcxproj.filters
@@ -62,9 +62,6 @@
src
-
- src
-
src
@@ -83,15 +80,24 @@
src
-
- src
-
src
src
+
+ src
+
+
+ src
+
+
+ src
+
+
+ src
+
@@ -175,10 +181,19 @@
src
-
+
src
-
+
+ src
+
+
+ src
+
+
+ src
+
+
src
diff --git a/metamod/src/commands_meta.cpp b/metamod/src/commands_meta.cpp
index 1f2f43e..07f57e2 100644
--- a/metamod/src/commands_meta.cpp
+++ b/metamod/src/commands_meta.cpp
@@ -114,7 +114,7 @@ void cmd_meta_version()
return;
}
- META_CONS("Metamod-r v%s, API (%s)", APP_VERSION_STRD, META_INTERFACE_VERSION);
+ META_CONS("Metamod-r v%s, API (%s)", APP_VERSION, META_INTERFACE_VERSION);
META_CONS("Metamod-r build: " __TIME__ " " __DATE__ "");
META_CONS("Metamod-r from: " APP_COMMIT_URL APP_COMMIT_SHA "");
}
@@ -127,7 +127,7 @@ void client_meta_version(edict_t *pEntity)
return;
}
- META_CONS("Metamod-r v%s, API (%s)", APP_VERSION_STRD, META_INTERFACE_VERSION);
+ META_CONS("Metamod-r v%s, API (%s)", APP_VERSION, META_INTERFACE_VERSION);
META_CONS("Metamod-r build: " __TIME__ " " __DATE__ "");
META_CONS("Metamod-r from: " APP_COMMIT_URL APP_COMMIT_SHA "");
}
@@ -336,7 +336,7 @@ void cmd_doplug(PLUG_CMD pcmd)
}
// Allow chance to read the message, before any window closes.
- do_exit(1);
+ sleep(3);
}
if (findp && !unique) {
diff --git a/metamod/src/conf_meta.cpp b/metamod/src/conf_meta.cpp
index 609d7a0..35f3ef5 100644
--- a/metamod/src/conf_meta.cpp
+++ b/metamod/src/conf_meta.cpp
@@ -62,21 +62,22 @@ bool MConfig::set(option_t* setp, const char* setstr)
*optval = FALSE;
}
else {
- META_ERROR("option '%s' invalid format '%s'", setp->name,
- setstr);
+ META_ERROR("option '%s' invalid format '%s'", setp->name, setstr);
return false;
}
META_DEBUG(3, "set config bool: %s = %s", setp->name, *optval ? "true" : "false");
break;
case CF_STR:
- if (*optstr)
- Q_free(*optstr);
+ if (*optstr) {
+ free(*optstr);
+ }
*optstr = Q_strdup(setstr);
META_DEBUG(3, "set config string: %s = %s", setp->name, *optstr);
break;
case CF_PATH:
- if (*optstr)
- Q_free(*optstr);
+ if (*optstr) {
+ free(*optstr);
+ }
full_gamedir_path(setstr, pathbuf);
*optstr = Q_strdup(pathbuf);
META_DEBUG(3, "set config path: %s = %s", setp->name, *optstr);
diff --git a/metamod/src/dllapi.cpp b/metamod/src/dllapi.cpp
index 4fabf16..f937510 100644
--- a/metamod/src/dllapi.cpp
+++ b/metamod/src/dllapi.cpp
@@ -2,7 +2,7 @@
#define CDATA_DLL_H(x, p, h) CDATA_ENTRY(DLL_FUNCTIONS, x, p, size_t(h))
#define CDATA_DLL(x) CDATA_ENTRY(DLL_FUNCTIONS, x, P_PRE, 0u)
-#define CDATA_NEWDLL_H(x, p, h) CDATA_ENTRY(NEW_DLL_FUNCTIONS, x, p, uint8(h))
+#define CDATA_NEWDLL_H(x, p, h) CDATA_ENTRY(NEW_DLL_FUNCTIONS, x, p, size_t(h))
#define CDATA_NEWDLL(x) CDATA_ENTRY(NEW_DLL_FUNCTIONS, x, P_PRE, 0u)
DLL_FUNCTIONS sFunctionTable;
@@ -12,6 +12,13 @@ NEW_DLL_FUNCTIONS sNewFunctionTable;
NEW_DLL_FUNCTIONS sNewFunctionTable_jit;
NEW_DLL_FUNCTIONS *pHookedNewDllFunctions = &sNewFunctionTable;
+void MM_PRE_HOOK EXT_FUNC mm_GameShutdown()
+{
+ g_meta_extdll.unload();
+ g_GameDLL.sys_module.unload();
+ g_engine.sys_module.unload();
+}
+
void MM_PRE_HOOK EXT_FUNC mm_ClientConnect(edict_t *pEntity, const char *, const char *, char[128])
{
g_players.clear_player_cvar_query(pEntity);
@@ -58,76 +65,76 @@ void EXT_FUNC mm_ServerDeactivate()
compile_data_t g_dllfunc_cdata[] =
{
- CDATA_DLL(pfnGameInit), // pfnGameInit() Initialize the game (one-time call after loading of game .dll)
- CDATA_DLL(pfnSpawn), // pfnSpawn()
- CDATA_DLL(pfnThink), // pfnThink()
- CDATA_DLL(pfnUse), // pfnUse()
- CDATA_DLL(pfnTouch), // pfnTouch()
- CDATA_DLL(pfnBlocked), // pfnBlocked()
- CDATA_DLL(pfnKeyValue), // pfnKeyValue()
- CDATA_DLL(pfnSave), // pfnSave()
- CDATA_DLL(pfnRestore), // pfnRestore()
- CDATA_DLL(pfnSetAbsBox), // pfnSetAbsBox()
+ CDATA_DLL(pfnGameInit), // pfnGameInit() Initialize the game (one-time call after loading of game .dll)
+ CDATA_DLL(pfnSpawn), // pfnSpawn()
+ CDATA_DLL(pfnThink), // pfnThink()
+ CDATA_DLL(pfnUse), // pfnUse()
+ CDATA_DLL(pfnTouch), // pfnTouch()
+ CDATA_DLL(pfnBlocked), // pfnBlocked()
+ CDATA_DLL(pfnKeyValue), // pfnKeyValue()
+ CDATA_DLL(pfnSave), // pfnSave()
+ CDATA_DLL(pfnRestore), // pfnRestore()
+ CDATA_DLL(pfnSetAbsBox), // pfnSetAbsBox()
- CDATA_DLL(pfnSaveWriteFields), // pfnSaveWriteFields()
- CDATA_DLL(pfnSaveReadFields), // pfnSaveReadFields()
+ CDATA_DLL(pfnSaveWriteFields), // pfnSaveWriteFields()
+ CDATA_DLL(pfnSaveReadFields), // pfnSaveReadFields()
- CDATA_DLL(pfnSaveGlobalState), // pfnSaveGlobalState()
- CDATA_DLL(pfnRestoreGlobalState), // pfnRestoreGlobalState()
- CDATA_DLL(pfnResetGlobalState), // pfnResetGlobalState()
+ CDATA_DLL(pfnSaveGlobalState), // pfnSaveGlobalState()
+ CDATA_DLL(pfnRestoreGlobalState), // pfnRestoreGlobalState()
+ CDATA_DLL(pfnResetGlobalState), // pfnResetGlobalState()
- CDATA_DLL_H(pfnClientConnect, P_PRE, mm_ClientConnect), // pfnClientConnect() (wd) Client has connected
- CDATA_DLL_H(pfnClientDisconnect, P_PRE, mm_ClientDisconnect), // pfnClientDisconnect() (wd) Player has left the game
- CDATA_DLL(pfnClientKill), // pfnClientKill() (wd) Player has typed "kill"
- CDATA_DLL(pfnClientPutInServer), // pfnClientPutInServer() (wd) Client is entering the game
+ CDATA_DLL_H(pfnClientConnect, P_PRE, mm_ClientConnect), // pfnClientConnect() (wd) Client has connected
+ CDATA_DLL_H(pfnClientDisconnect, P_PRE, mm_ClientDisconnect), // pfnClientDisconnect() (wd) Player has left the game
+ CDATA_DLL(pfnClientKill), // pfnClientKill() (wd) Player has typed "kill"
+ CDATA_DLL(pfnClientPutInServer), // pfnClientPutInServer() (wd) Client is entering the game
CDATA_DLL_H(pfnClientCommand, P_PRE, mm_ClientCommand),
- CDATA_DLL(pfnClientUserInfoChanged), // pfnClientUserInfoChanged() (wd) Client has updated their setinfo structure
- CDATA_DLL(pfnServerActivate), // pfnServerActivate() (wd) Server is starting a new map
- CDATA_DLL(pfnServerDeactivate), // pfnServerDeactivate() (wd) Server is leaving the map (shutdown), or changelevel); SDK2
+ CDATA_DLL(pfnClientUserInfoChanged), // pfnClientUserInfoChanged() (wd) Client has updated their setinfo structure
+ CDATA_DLL(pfnServerActivate), // pfnServerActivate() (wd) Server is starting a new map
+ CDATA_DLL(pfnServerDeactivate), // pfnServerDeactivate() (wd) Server is leaving the map (shutdown), or changelevel); SDK2
- CDATA_DLL(pfnPlayerPreThink), // pfnPlayerPreThink()
- CDATA_DLL(pfnPlayerPostThink), // pfnPlayerPostThink()
+ CDATA_DLL(pfnPlayerPreThink), // pfnPlayerPreThink()
+ CDATA_DLL(pfnPlayerPostThink), // pfnPlayerPostThink()
- CDATA_DLL(pfnStartFrame), // pfnStartFrame()
- CDATA_DLL(pfnParmsNewLevel), // pfnParmsNewLevel()
- CDATA_DLL(pfnParmsChangeLevel), // pfnParmsChangeLevel()
+ CDATA_DLL(pfnStartFrame), // pfnStartFrame()
+ CDATA_DLL(pfnParmsNewLevel), // pfnParmsNewLevel()
+ CDATA_DLL(pfnParmsChangeLevel), // pfnParmsChangeLevel()
- CDATA_DLL(pfnGetGameDescription), // pfnGetGameDescription() Returns string describing current .dll. E.g. "TeamFotrress 2"), "Half-Life"
- CDATA_DLL(pfnPlayerCustomization), // pfnPlayerCustomization() Notifies .dll of new customization for player.
+ CDATA_DLL(pfnGetGameDescription), // pfnGetGameDescription() Returns string describing current .dll. E.g. "TeamFotrress 2"), "Half-Life"
+ CDATA_DLL(pfnPlayerCustomization), // pfnPlayerCustomization() Notifies .dll of new customization for player.
- CDATA_DLL(pfnSpectatorConnect), // pfnSpectatorConnect() Called when spectator joins server
- CDATA_DLL(pfnSpectatorDisconnect), // pfnSpectatorDisconnect() Called when spectator leaves the server
- CDATA_DLL(pfnSpectatorThink), // pfnSpectatorThink() Called when spectator sends a command packet (usercmd_t)
+ CDATA_DLL(pfnSpectatorConnect), // pfnSpectatorConnect() Called when spectator joins server
+ CDATA_DLL(pfnSpectatorDisconnect), // pfnSpectatorDisconnect() Called when spectator leaves the server
+ CDATA_DLL(pfnSpectatorThink), // pfnSpectatorThink() Called when spectator sends a command packet (usercmd_t)
- CDATA_DLL(pfnSys_Error), // pfnSys_Error() Notify game .dll that engine is going to shut down. Allows mod authors to set a breakpoint. SDK2
+ CDATA_DLL(pfnSys_Error), // pfnSys_Error() Notify game .dll that engine is going to shut down. Allows mod authors to set a breakpoint. SDK2
- CDATA_DLL(pfnPM_Move), // pfnPM_Move() (wd) SDK2
- CDATA_DLL(pfnPM_Init), // pfnPM_Init() Server version of player movement initialization; (wd) SDK2
- CDATA_DLL(pfnPM_FindTextureType), // pfnPM_FindTextureType() (wd) SDK2
+ CDATA_DLL(pfnPM_Move), // pfnPM_Move() (wd) SDK2
+ CDATA_DLL(pfnPM_Init), // pfnPM_Init() Server version of player movement initialization; (wd) SDK2
+ CDATA_DLL(pfnPM_FindTextureType), // pfnPM_FindTextureType() (wd) SDK2
- CDATA_DLL(pfnSetupVisibility), // pfnSetupVisibility() Set up PVS and PAS for networking for this client; (wd) SDK2
- CDATA_DLL(pfnUpdateClientData), // pfnUpdateClientData() Set up data sent only to specific client; (wd) SDK2
- CDATA_DLL(pfnAddToFullPack), // pfnAddToFullPack() (wd) SDK2
- CDATA_DLL(pfnCreateBaseline), // pfnCreateBaseline() Tweak entity baseline for network encoding), allows setup of player baselines), too.; (wd) SDK2
- CDATA_DLL(pfnRegisterEncoders), // pfnRegisterEncoders() Callbacks for network encoding; (wd) SDK2
- CDATA_DLL(pfnGetWeaponData), // pfnGetWeaponData() (wd) SDK2
- CDATA_DLL(pfnCmdStart), // pfnCmdStart() (wd) SDK2
- CDATA_DLL(pfnCmdEnd), // pfnCmdEnd() (wd) SDK2
- CDATA_DLL(pfnConnectionlessPacket), // pfnConnectionlessPacket() (wd) SDK2
- CDATA_DLL(pfnGetHullBounds), // pfnGetHullBounds() (wd) SDK2
- CDATA_DLL(pfnCreateInstancedBaselines), // pfnCreateInstancedBaselines() (wd) SDK2
- CDATA_DLL(pfnInconsistentFile), // pfnInconsistentFile() (wd) SDK2
- CDATA_DLL(pfnAllowLagCompensation), // pfnAllowLagCompensation() (wd) SDK2
+ CDATA_DLL(pfnSetupVisibility), // pfnSetupVisibility() Set up PVS and PAS for networking for this client; (wd) SDK2
+ CDATA_DLL(pfnUpdateClientData), // pfnUpdateClientData() Set up data sent only to specific client; (wd) SDK2
+ CDATA_DLL(pfnAddToFullPack), // pfnAddToFullPack() (wd) SDK2
+ CDATA_DLL(pfnCreateBaseline), // pfnCreateBaseline() Tweak entity baseline for network encoding), allows setup of player baselines), too.; (wd) SDK2
+ CDATA_DLL(pfnRegisterEncoders), // pfnRegisterEncoders() Callbacks for network encoding; (wd) SDK2
+ CDATA_DLL(pfnGetWeaponData), // pfnGetWeaponData() (wd) SDK2
+ CDATA_DLL(pfnCmdStart), // pfnCmdStart() (wd) SDK2
+ CDATA_DLL(pfnCmdEnd), // pfnCmdEnd() (wd) SDK2
+ CDATA_DLL(pfnConnectionlessPacket), // pfnConnectionlessPacket() (wd) SDK2
+ CDATA_DLL(pfnGetHullBounds), // pfnGetHullBounds() (wd) SDK2
+ CDATA_DLL(pfnCreateInstancedBaselines), // pfnCreateInstancedBaselines()(wd) SDK2
+ CDATA_DLL(pfnInconsistentFile), // pfnInconsistentFile() (wd) SDK2
+ CDATA_DLL(pfnAllowLagCompensation), // pfnAllowLagCompensation() (wd) SDK2
};
compile_data_t g_newdllfunc_cdata[] =
{
- CDATA_NEWDLL(pfnOnFreeEntPrivateData), // pfnOnFreeEntPrivateData() Called right before the object's memory is freed. Calls its destructor.
- CDATA_NEWDLL(pfnGameShutdown), // pfnGameShutdown()
- CDATA_NEWDLL(pfnShouldCollide), // pfnShouldCollide()
+ CDATA_NEWDLL(pfnOnFreeEntPrivateData), // pfnOnFreeEntPrivateData() Called right before the object's memory is freed. Calls its destructor.
+ CDATA_NEWDLL_H(pfnGameShutdown, P_PRE, mm_GameShutdown), // pfnGameShutdown()
+ CDATA_NEWDLL(pfnShouldCollide), // pfnShouldCollide()
- CDATA_NEWDLL(pfnCvarValue), // pfnCvarValue() (fz) Use mm_CvarValue2 instead
- CDATA_NEWDLL(pfnCvarValue2) // pfnCvarValue2() (fz) When pfnQueryClientCvarValue2() completes it will call
+ CDATA_NEWDLL(pfnCvarValue), // pfnCvarValue() (fz) Use mm_CvarValue2 instead
+ CDATA_NEWDLL(pfnCvarValue2) // pfnCvarValue2() (fz) When pfnQueryClientCvarValue2() completes it will call
// pfnCvarValue2() with the request ID supplied earlier, the name of the cvar requested and the value of that cvar.
};
@@ -202,6 +209,8 @@ C_DLLEXPORT int GetNewDLLFunctions(NEW_DLL_FUNCTIONS *pNewFunctionTable, int *in
*interfaceVersion = NEW_DLL_FUNCTIONS_VERSION;
return FALSE;
}
+
+ g_meta_extdll.load();
memcpy(pNewFunctionTable, &sNewFunctionTable, sizeof(NEW_DLL_FUNCTIONS));
return TRUE;
}
diff --git a/metamod/src/engine_t.h b/metamod/src/engine_t.h
index d456724..a339c63 100644
--- a/metamod/src/engine_t.h
+++ b/metamod/src/engine_t.h
@@ -8,10 +8,12 @@ struct engine_t
memset(&pl_funcs, 0, sizeof pl_funcs);
}
- enginefuncs_t* funcs; // engine funcs
- globalvars_t* globals; // engine globals
+ enginefuncs_t* funcs; // engine funcs
+ globalvars_t* globals; // engine globals
+
// Our modified version of the engine funcs, to give to plugins.
- enginefuncs_t pl_funcs; // "modified" eng funcs we give to plugins
+ enginefuncs_t pl_funcs; // "modified" eng funcs we give to plugins
+ CSysModule sys_module;
};
extern engine_t g_engine;
diff --git a/metamod/src/game_support.cpp b/metamod/src/game_support.cpp
index 2fb74f4..4fad48b 100644
--- a/metamod/src/game_support.cpp
+++ b/metamod/src/game_support.cpp
@@ -47,7 +47,7 @@ bool lookup_game_postfixes(gamedll_t *gamedll)
char pathname[PATH_MAX];
static char postfix_path[PATH_MAX] = "";
- strlcpy(pathname, gamedll->pathname);
+ Q_strlcpy(pathname, gamedll->pathname);
// find extensions and skip
char *pos = strrchr(pathname, '.');
@@ -58,12 +58,12 @@ bool lookup_game_postfixes(gamedll_t *gamedll)
for (size_t i = 0; i < arraysize(g_platform_postfixes); i++)
{
postfix_path[0] = '\0';
- strlcat(postfix_path, pathname);
- strlcat(postfix_path, g_platform_postfixes[i]);
+ Q_strlcat(postfix_path, pathname);
+ Q_strlcat(postfix_path, g_platform_postfixes[i]);
if (is_file_exists_in_gamedir(postfix_path)) {
- strlcpy(gamedll->pathname, postfix_path);
- strlcpy(gamedll->real_pathname, postfix_path);
+ Q_strlcpy(gamedll->pathname, postfix_path);
+ Q_strlcpy(gamedll->real_pathname, postfix_path);
gamedll->file = postfix_path;
return true;
@@ -94,7 +94,7 @@ bool install_gamedll(char *from, const char *to)
return false;
}
- int length_out = Q_write(fd, cachefile, length_in);
+ int length_out = write(fd, cachefile, length_in);
FREE_FILE(cachefile);
close(fd);
@@ -146,7 +146,7 @@ bool setup_gamedll(gamedll_t *gamedll)
// Use override-dll if specified.
if (g_config->m_gamedll) {
- strlcpy(gamedll->pathname, g_config->m_gamedll);
+ Q_strlcpy(gamedll->pathname, g_config->m_gamedll);
// If the path is relative, the gamedll file will be missing and
// it might be found in the cache file.
@@ -157,7 +157,7 @@ bool setup_gamedll(gamedll_t *gamedll)
// If we could successfully install the gamedll from the cache we
// rectify the pathname to be a full pathname.
if (install_gamedll(gamedll->pathname, szInstallPath)) {
- strlcpy(gamedll->pathname, szInstallPath);
+ Q_strlcpy(gamedll->pathname, szInstallPath);
}
}
@@ -187,7 +187,7 @@ bool setup_gamedll(gamedll_t *gamedll)
Q_snprintf(gamedll->real_pathname, sizeof(gamedll->real_pathname), "%s/dlls/%s", gamedll->gamedir, knownfn);
}
else {
- strlcpy(gamedll->real_pathname, gamedll->pathname);
+ Q_strlcpy(gamedll->real_pathname, gamedll->pathname);
}
if (override) {
@@ -198,7 +198,7 @@ bool setup_gamedll(gamedll_t *gamedll)
META_LOG("Overriding game '%s' with dllfile '%s'", gamedll->name, gamedll->file);
}
else if (known) {
- strlcpy(gamedll->desc, known->desc);
+ Q_strlcpy(gamedll->desc, known->desc);
#if !defined(_WIN32)
if (!is_file_exists_in_gamedir(gamedll->pathname))
diff --git a/metamod/src/h_export.cpp b/metamod/src/h_export.cpp
index b9ae98d..0d8e362 100644
--- a/metamod/src/h_export.cpp
+++ b/metamod/src/h_export.cpp
@@ -15,6 +15,8 @@ void WINAPI GiveFnptrsToDll(enginefuncs_t* pengfuncsFromEngine, globalvars_t* pG
gpGlobals = pGlobals;
g_engine.funcs = &g_engfuncs;
g_engine.globals = pGlobals;
+ g_engfuncs = *pengfuncsFromEngine;
+ g_engine.sys_module.load(pengfuncsFromEngine);
g_engfuncs = *pengfuncsFromEngine;
flush_ALERT_buffer();
diff --git a/metamod/src/linkgame.cpp b/metamod/src/linkgame.cpp
index 14d879e..2360d20 100644
--- a/metamod/src/linkgame.cpp
+++ b/metamod/src/linkgame.cpp
@@ -6,3590 +6,4 @@
// "mklinkgame.sh". See the files in the directory "ents" for the actual
// list of entities.
-LINK_ENTITY_TO_GAME(AngleIMatrix);
-LINK_ENTITY_TO_GAME(AngleMatrix);
-LINK_ENTITY_TO_GAME(BALLS_airball);
-LINK_ENTITY_TO_GAME(CTF_Map);
-LINK_ENTITY_TO_GAME(CreateInterface);
-LINK_ENTITY_TO_GAME(DLLClassName);
-LINK_ENTITY_TO_GAME(DelayedUse);
-LINK_ENTITY_TO_GAME(Electro_Bolt);
-LINK_ENTITY_TO_GAME(FISHINGROD_bolt);
-LINK_ENTITY_TO_GAME(FOOT_bolt);
-LINK_ENTITY_TO_GAME(FlyingTomaHawk);
-LINK_ENTITY_TO_GAME(GetChaseOrigin);
-LINK_ENTITY_TO_GAME(IsoBomb);
-LINK_ENTITY_TO_GAME(PythRound);
-LINK_ENTITY_TO_GAME(RONINTeamScore);
-LINK_ENTITY_TO_GAME(SA_Model);
-LINK_ENTITY_TO_GAME(SCAVENGERTeamScore);
-LINK_ENTITY_TO_GAME(Satelite__Laser);
-LINK_ENTITY_TO_GAME(TSAmmoPack);
-LINK_ENTITY_TO_GAME(TSWorldGun);
-LINK_ENTITY_TO_GAME(TS_PowerUp);
-LINK_ENTITY_TO_GAME(TS_bomb);
-LINK_ENTITY_TO_GAME(USMCTeamScore);
-LINK_ENTITY_TO_GAME(Zombie2Spit);
-LINK_ENTITY_TO_GAME(_spit);
-LINK_ENTITY_TO_GAME(_squadfix);
-LINK_ENTITY_TO_GAME(acidgib);
-LINK_ENTITY_TO_GAME(active_bomb);
-LINK_ENTITY_TO_GAME(afterimage);
-LINK_ENTITY_TO_GAME(aiscripted_sequence);
-LINK_ENTITY_TO_GAME(ak74grenade);
-LINK_ENTITY_TO_GAME(alien_slave_energy_ball);
-LINK_ENTITY_TO_GAME(alien_slave_sapper);
-LINK_ENTITY_TO_GAME(alienresourcetower);
-LINK_ENTITY_TO_GAME(ambient_generic);
-LINK_ENTITY_TO_GAME(ammo_0mm45);
-LINK_ENTITY_TO_GAME(ammo_0mm50b);
-LINK_ENTITY_TO_GAME(ammo_10mmbuckshot);
-LINK_ENTITY_TO_GAME(ammo_10mmbuckshotbox);
-LINK_ENTITY_TO_GAME(ammo_127mm);
-LINK_ENTITY_TO_GAME(ammo_12g);
-LINK_ENTITY_TO_GAME(ammo_1911clip);
-LINK_ENTITY_TO_GAME(ammo_2mm);
-LINK_ENTITY_TO_GAME(ammo_30cal);
-LINK_ENTITY_TO_GAME(ammo_30mm);
-LINK_ENTITY_TO_GAME(ammo_338Magnum);
-LINK_ENTITY_TO_GAME(ammo_338magnum);
-LINK_ENTITY_TO_GAME(ammo_357);
-LINK_ENTITY_TO_GAME(ammo_357SIG);
-LINK_ENTITY_TO_GAME(ammo_357sig);
-LINK_ENTITY_TO_GAME(ammo_40glclip);
-LINK_ENTITY_TO_GAME(ammo_40mm);
-LINK_ENTITY_TO_GAME(ammo_44);
-LINK_ENTITY_TO_GAME(ammo_45ACP);
-LINK_ENTITY_TO_GAME(ammo_45acp);
-LINK_ENTITY_TO_GAME(ammo_45cal);
-LINK_ENTITY_TO_GAME(ammo_50AE);
-LINK_ENTITY_TO_GAME(ammo_50ae);
-LINK_ENTITY_TO_GAME(ammo_50cal);
-LINK_ENTITY_TO_GAME(ammo_556);
-LINK_ENTITY_TO_GAME(ammo_556AR);
-LINK_ENTITY_TO_GAME(ammo_556Nato);
-LINK_ENTITY_TO_GAME(ammo_556box);
-LINK_ENTITY_TO_GAME(ammo_556nato);
-LINK_ENTITY_TO_GAME(ammo_556natobox);
-LINK_ENTITY_TO_GAME(ammo_57mm);
-LINK_ENTITY_TO_GAME(ammo_5mm56);
-LINK_ENTITY_TO_GAME(ammo_5mm7);
-LINK_ENTITY_TO_GAME(ammo_762);
-LINK_ENTITY_TO_GAME(ammo_762Magnum);
-LINK_ENTITY_TO_GAME(ammo_762Nato);
-LINK_ENTITY_TO_GAME(ammo_762mmbox);
-LINK_ENTITY_TO_GAME(ammo_762nato);
-LINK_ENTITY_TO_GAME(ammo_762x54);
-LINK_ENTITY_TO_GAME(ammo_766mm);
-LINK_ENTITY_TO_GAME(ammo_7mm62);
-LINK_ENTITY_TO_GAME(ammo_86mm);
-LINK_ENTITY_TO_GAME(ammo_8mm);
-LINK_ENTITY_TO_GAME(ammo_9mm);
-LINK_ENTITY_TO_GAME(ammo_9mmAR);
-LINK_ENTITY_TO_GAME(ammo_9mmbox);
-LINK_ENTITY_TO_GAME(ammo_9mmclip);
-LINK_ENTITY_TO_GAME(ammo_AK47clip);
-LINK_ENTITY_TO_GAME(ammo_ARgrenades);
-LINK_ENTITY_TO_GAME(ammo_BALLS);
-LINK_ENTITY_TO_GAME(ammo_CEnfield);
-LINK_ENTITY_TO_GAME(ammo_Deagle);
-LINK_ENTITY_TO_GAME(ammo_Dmissile);
-LINK_ENTITY_TO_GAME(ammo_EnergyCells);
-LINK_ENTITY_TO_GAME(ammo_FISHINGROD);
-LINK_ENTITY_TO_GAME(ammo_FOOT);
-LINK_ENTITY_TO_GAME(ammo_FTclip);
-LINK_ENTITY_TO_GAME(ammo_GMauserG98);
-LINK_ENTITY_TO_GAME(ammo_GluonCells);
-LINK_ENTITY_TO_GAME(ammo_M16grenades);
-LINK_ENTITY_TO_GAME(ammo_MicroFusionCells);
-LINK_ENTITY_TO_GAME(ammo_NGgrenades);
-LINK_ENTITY_TO_GAME(ammo_ShockCore);
-LINK_ENTITY_TO_GAME(ammo_ShockGrenade);
-LINK_ENTITY_TO_GAME(ammo_SunOfGod);
-LINK_ENTITY_TO_GAME(ammo_WTELEPORTERgrenades);
-LINK_ENTITY_TO_GAME(ammo_adrenaline);
-LINK_ENTITY_TO_GAME(ammo_ak101);
-LINK_ENTITY_TO_GAME(ammo_ak105);
-LINK_ENTITY_TO_GAME(ammo_ak47);
-LINK_ENTITY_TO_GAME(ammo_ak47clip);
-LINK_ENTITY_TO_GAME(ammo_ak5);
-LINK_ENTITY_TO_GAME(ammo_ak74);
-LINK_ENTITY_TO_GAME(ammo_ak74clip);
-LINK_ENTITY_TO_GAME(ammo_ak74grenades);
-LINK_ENTITY_TO_GAME(ammo_anaconda);
-LINK_ENTITY_TO_GAME(ammo_ar10clip);
-LINK_ENTITY_TO_GAME(ammo_ar33clip);
-LINK_ENTITY_TO_GAME(ammo_areaammo);
-LINK_ENTITY_TO_GAME(ammo_aug);
-LINK_ENTITY_TO_GAME(ammo_awm);
-LINK_ENTITY_TO_GAME(ammo_awp);
-LINK_ENTITY_TO_GAME(ammo_axes);
-LINK_ENTITY_TO_GAME(ammo_bar);
-LINK_ENTITY_TO_GAME(ammo_baretta);
-LINK_ENTITY_TO_GAME(ammo_bazooka);
-LINK_ENTITY_TO_GAME(ammo_beamgunclip);
-LINK_ENTITY_TO_GAME(ammo_benelli);
-LINK_ENTITY_TO_GAME(ammo_ber92f);
-LINK_ENTITY_TO_GAME(ammo_ber93r);
-LINK_ENTITY_TO_GAME(ammo_beretta);
-LINK_ENTITY_TO_GAME(ammo_berettaclip);
-LINK_ENTITY_TO_GAME(ammo_berrett82clip);
-LINK_ENTITY_TO_GAME(ammo_bfg);
-LINK_ENTITY_TO_GAME(ammo_bizon);
-LINK_ENTITY_TO_GAME(ammo_boltrifle);
-LINK_ENTITY_TO_GAME(ammo_bow);
-LINK_ENTITY_TO_GAME(ammo_bren);
-LINK_ENTITY_TO_GAME(ammo_brick);
-LINK_ENTITY_TO_GAME(ammo_buckshot);
-LINK_ENTITY_TO_GAME(ammo_buffalo);
-LINK_ENTITY_TO_GAME(ammo_cannon);
-LINK_ENTITY_TO_GAME(ammo_caseless);
-LINK_ENTITY_TO_GAME(ammo_cell);
-LINK_ENTITY_TO_GAME(ammo_cgrenade);
-LINK_ENTITY_TO_GAME(ammo_chemical);
-LINK_ENTITY_TO_GAME(ammo_cloaker);
-LINK_ENTITY_TO_GAME(ammo_colt);
-LINK_ENTITY_TO_GAME(ammo_colt45clip);
-LINK_ENTITY_TO_GAME(ammo_coltgov);
-LINK_ENTITY_TO_GAME(ammo_colts);
-LINK_ENTITY_TO_GAME(ammo_concussion);
-LINK_ENTITY_TO_GAME(ammo_cougarclip);
-LINK_ENTITY_TO_GAME(ammo_cpc);
-LINK_ENTITY_TO_GAME(ammo_crate);
-LINK_ENTITY_TO_GAME(ammo_crossbow);
-LINK_ENTITY_TO_GAME(ammo_d5kclip);
-LINK_ENTITY_TO_GAME(ammo_dbshot);
-LINK_ENTITY_TO_GAME(ammo_dd44clip);
-LINK_ENTITY_TO_GAME(ammo_de50);
-LINK_ENTITY_TO_GAME(ammo_deagle);
-LINK_ENTITY_TO_GAME(ammo_deagleclip);
-LINK_ENTITY_TO_GAME(ammo_deploygun);
-LINK_ENTITY_TO_GAME(ammo_desert);
-LINK_ENTITY_TO_GAME(ammo_dmlclip);
-LINK_ENTITY_TO_GAME(ammo_doubleshotgun);
-LINK_ENTITY_TO_GAME(ammo_dragunovclip);
-LINK_ENTITY_TO_GAME(ammo_dsr1);
-LINK_ENTITY_TO_GAME(ammo_dualberettas);
-LINK_ENTITY_TO_GAME(ammo_dualscorpion);
-LINK_ENTITY_TO_GAME(ammo_dyno);
-LINK_ENTITY_TO_GAME(ammo_eagleclip);
-LINK_ENTITY_TO_GAME(ammo_egonclip);
-LINK_ENTITY_TO_GAME(ammo_el_standard);
-LINK_ENTITY_TO_GAME(ammo_enfield);
-LINK_ENTITY_TO_GAME(ammo_exploder);
-LINK_ENTITY_TO_GAME(ammo_explogun);
-LINK_ENTITY_TO_GAME(ammo_famas);
-LINK_ENTITY_TO_GAME(ammo_famasclip);
-LINK_ENTITY_TO_GAME(ammo_fg42);
-LINK_ENTITY_TO_GAME(ammo_fiveseven);
-LINK_ENTITY_TO_GAME(ammo_flameammo);
-LINK_ENTITY_TO_GAME(ammo_flameclip);
-LINK_ENTITY_TO_GAME(ammo_flashbang);
-LINK_ENTITY_TO_GAME(ammo_fnfal);
-LINK_ENTITY_TO_GAME(ammo_fnp90clip);
-LINK_ENTITY_TO_GAME(ammo_frag);
-LINK_ENTITY_TO_GAME(ammo_freezeclip);
-LINK_ENTITY_TO_GAME(ammo_fuel);
-LINK_ENTITY_TO_GAME(ammo_g11);
-LINK_ENTITY_TO_GAME(ammo_g36);
-LINK_ENTITY_TO_GAME(ammo_g36clip);
-LINK_ENTITY_TO_GAME(ammo_g36e);
-LINK_ENTITY_TO_GAME(ammo_g36k);
-LINK_ENTITY_TO_GAME(ammo_g3a3);
-LINK_ENTITY_TO_GAME(ammo_galil);
-LINK_ENTITY_TO_GAME(ammo_garand);
-LINK_ENTITY_TO_GAME(ammo_gatlinbox);
-LINK_ENTITY_TO_GAME(ammo_gattlinggun);
-LINK_ENTITY_TO_GAME(ammo_gaussclip);
-LINK_ENTITY_TO_GAME(ammo_generic_american);
-LINK_ENTITY_TO_GAME(ammo_generic_british);
-LINK_ENTITY_TO_GAME(ammo_generic_german);
-LINK_ENTITY_TO_GAME(ammo_gewehr);
-LINK_ENTITY_TO_GAME(ammo_glock17);
-LINK_ENTITY_TO_GAME(ammo_glock18);
-LINK_ENTITY_TO_GAME(ammo_glockclip);
-LINK_ENTITY_TO_GAME(ammo_goldpp7clip);
-LINK_ENTITY_TO_GAME(ammo_gp25);
-LINK_ENTITY_TO_GAME(ammo_greasegun);
-LINK_ENTITY_TO_GAME(ammo_grenades);
-LINK_ENTITY_TO_GAME(ammo_handcannon);
-LINK_ENTITY_TO_GAME(ammo_helirockets);
-LINK_ENTITY_TO_GAME(ammo_hellfire);
-LINK_ENTITY_TO_GAME(ammo_hk21);
-LINK_ENTITY_TO_GAME(ammo_hk33clip);
-LINK_ENTITY_TO_GAME(ammo_hkmp5);
-LINK_ENTITY_TO_GAME(ammo_isotope);
-LINK_ENTITY_TO_GAME(ammo_jackhammer);
-LINK_ENTITY_TO_GAME(ammo_javelins);
-LINK_ENTITY_TO_GAME(ammo_k43);
-LINK_ENTITY_TO_GAME(ammo_kar);
-LINK_ENTITY_TO_GAME(ammo_kf7clip);
-LINK_ENTITY_TO_GAME(ammo_knife);
-LINK_ENTITY_TO_GAME(ammo_knives);
-LINK_ENTITY_TO_GAME(ammo_launcher);
-LINK_ENTITY_TO_GAME(ammo_lgclip);
-LINK_ENTITY_TO_GAME(ammo_lgrenades);
-LINK_ENTITY_TO_GAME(ammo_lightning);
-LINK_ENTITY_TO_GAME(ammo_longbow);
-LINK_ENTITY_TO_GAME(ammo_longslide);
-LINK_ENTITY_TO_GAME(ammo_lrclip);
-LINK_ENTITY_TO_GAME(ammo_luger);
-LINK_ENTITY_TO_GAME(ammo_m11);
-LINK_ENTITY_TO_GAME(ammo_m112);
-LINK_ENTITY_TO_GAME(ammo_m134);
-LINK_ENTITY_TO_GAME(ammo_m16);
-LINK_ENTITY_TO_GAME(ammo_m16a2clip);
-LINK_ENTITY_TO_GAME(ammo_m16clip);
-LINK_ENTITY_TO_GAME(ammo_m1carbine);
-LINK_ENTITY_TO_GAME(ammo_m2);
-LINK_ENTITY_TO_GAME(ammo_m203);
-LINK_ENTITY_TO_GAME(ammo_m249);
-LINK_ENTITY_TO_GAME(ammo_m4);
-LINK_ENTITY_TO_GAME(ammo_m40a1clip);
-LINK_ENTITY_TO_GAME(ammo_m4a1);
-LINK_ENTITY_TO_GAME(ammo_m4clip);
-LINK_ENTITY_TO_GAME(ammo_m60);
-LINK_ENTITY_TO_GAME(ammo_m60clip);
-LINK_ENTITY_TO_GAME(ammo_m79);
-LINK_ENTITY_TO_GAME(ammo_m82);
-LINK_ENTITY_TO_GAME(ammo_mac);
-LINK_ENTITY_TO_GAME(ammo_mac10);
-LINK_ENTITY_TO_GAME(ammo_machinegun);
-LINK_ENTITY_TO_GAME(ammo_markmusket);
-LINK_ENTITY_TO_GAME(ammo_mc51);
-LINK_ENTITY_TO_GAME(ammo_mf2clip);
-LINK_ENTITY_TO_GAME(ammo_mg34);
-LINK_ENTITY_TO_GAME(ammo_mg36);
-LINK_ENTITY_TO_GAME(ammo_mg42);
-LINK_ENTITY_TO_GAME(ammo_mindrayclip);
-LINK_ENTITY_TO_GAME(ammo_minigunClip);
-LINK_ENTITY_TO_GAME(ammo_minimissile);
-LINK_ENTITY_TO_GAME(ammo_mk23);
-LINK_ENTITY_TO_GAME(ammo_mossberg);
-LINK_ENTITY_TO_GAME(ammo_mp40);
-LINK_ENTITY_TO_GAME(ammo_mp44);
-LINK_ENTITY_TO_GAME(ammo_mp5);
-LINK_ENTITY_TO_GAME(ammo_mp5a2);
-LINK_ENTITY_TO_GAME(ammo_mp5a4);
-LINK_ENTITY_TO_GAME(ammo_mp5a5);
-LINK_ENTITY_TO_GAME(ammo_mp5clip);
-LINK_ENTITY_TO_GAME(ammo_mp5grenades);
-LINK_ENTITY_TO_GAME(ammo_mp5k);
-LINK_ENTITY_TO_GAME(ammo_mp5pdwclip);
-LINK_ENTITY_TO_GAME(ammo_mp5sd);
-LINK_ENTITY_TO_GAME(ammo_msg90);
-LINK_ENTITY_TO_GAME(ammo_musketoon);
-LINK_ENTITY_TO_GAME(ammo_nails);
-LINK_ENTITY_TO_GAME(ammo_nato);
-LINK_ENTITY_TO_GAME(ammo_nato308);
-LINK_ENTITY_TO_GAME(ammo_natoclip);
-LINK_ENTITY_TO_GAME(ammo_needle);
-LINK_ENTITY_TO_GAME(ammo_nuke);
-LINK_ENTITY_TO_GAME(ammo_null);
-LINK_ENTITY_TO_GAME(ammo_p99);
-LINK_ENTITY_TO_GAME(ammo_p99clip);
-LINK_ENTITY_TO_GAME(ammo_pdw);
-LINK_ENTITY_TO_GAME(ammo_phantomclip);
-LINK_ENTITY_TO_GAME(ammo_piat);
-LINK_ENTITY_TO_GAME(ammo_pistol);
-LINK_ENTITY_TO_GAME(ammo_pistolet);
-LINK_ENTITY_TO_GAME(ammo_pkm);
-LINK_ENTITY_TO_GAME(ammo_pkmclip);
-LINK_ENTITY_TO_GAME(ammo_powercell);
-LINK_ENTITY_TO_GAME(ammo_pschreck);
-LINK_ENTITY_TO_GAME(ammo_psg1);
-LINK_ENTITY_TO_GAME(ammo_psg1clip);
-LINK_ENTITY_TO_GAME(ammo_quad);
-LINK_ENTITY_TO_GAME(ammo_railgun);
-LINK_ENTITY_TO_GAME(ammo_rcp90clip);
-LINK_ENTITY_TO_GAME(ammo_remington);
-LINK_ENTITY_TO_GAME(ammo_rifleclip);
-LINK_ENTITY_TO_GAME(ammo_rifleshot);
-LINK_ENTITY_TO_GAME(ammo_rocket);
-LINK_ENTITY_TO_GAME(ammo_rocketlauncher);
-LINK_ENTITY_TO_GAME(ammo_rocketpistol);
-LINK_ENTITY_TO_GAME(ammo_rockets);
-LINK_ENTITY_TO_GAME(ammo_rpgclip);
-LINK_ENTITY_TO_GAME(ammo_rs202m2);
-LINK_ENTITY_TO_GAME(ammo_rs_grenade);
-LINK_ENTITY_TO_GAME(ammo_rs_psi);
-LINK_ENTITY_TO_GAME(ammo_ruger);
-LINK_ENTITY_TO_GAME(ammo_sa80clip);
-LINK_ENTITY_TO_GAME(ammo_saa);
-LINK_ENTITY_TO_GAME(ammo_saiga);
-LINK_ENTITY_TO_GAME(ammo_sako);
-LINK_ENTITY_TO_GAME(ammo_satchels);
-LINK_ENTITY_TO_GAME(ammo_sbarrelshot);
-LINK_ENTITY_TO_GAME(ammo_scatterclip);
-LINK_ENTITY_TO_GAME(ammo_scopedkar);
-LINK_ENTITY_TO_GAME(ammo_shells);
-LINK_ENTITY_TO_GAME(ammo_shot);
-LINK_ENTITY_TO_GAME(ammo_shrapnel);
-LINK_ENTITY_TO_GAME(ammo_sig245clip);
-LINK_ENTITY_TO_GAME(ammo_silverpp7clip);
-LINK_ENTITY_TO_GAME(ammo_sks);
-LINK_ENTITY_TO_GAME(ammo_slugs);
-LINK_ENTITY_TO_GAME(ammo_smg9);
-LINK_ENTITY_TO_GAME(ammo_snUZI);
-LINK_ENTITY_TO_GAME(ammo_sniper);
-LINK_ENTITY_TO_GAME(ammo_spas12);
-LINK_ENTITY_TO_GAME(ammo_spasclip);
-LINK_ENTITY_TO_GAME(ammo_spellbook);
-LINK_ENTITY_TO_GAME(ammo_spitcarb);
-LINK_ENTITY_TO_GAME(ammo_spitclip);
-LINK_ENTITY_TO_GAME(ammo_spore);
-LINK_ENTITY_TO_GAME(ammo_spring);
-LINK_ENTITY_TO_GAME(ammo_srifleclip);
-LINK_ENTITY_TO_GAME(ammo_ssg3000);
-LINK_ENTITY_TO_GAME(ammo_st_far);
-LINK_ENTITY_TO_GAME(ammo_st_heavy);
-LINK_ENTITY_TO_GAME(ammo_st_medium);
-LINK_ENTITY_TO_GAME(ammo_st_short);
-LINK_ENTITY_TO_GAME(ammo_st_special1);
-LINK_ENTITY_TO_GAME(ammo_st_special2);
-LINK_ENTITY_TO_GAME(ammo_sten);
-LINK_ENTITY_TO_GAME(ammo_sterling);
-LINK_ENTITY_TO_GAME(ammo_steyr_m40);
-LINK_ENTITY_TO_GAME(ammo_stg24);
-LINK_ENTITY_TO_GAME(ammo_stoner);
-LINK_ENTITY_TO_GAME(ammo_stonerscope);
-LINK_ENTITY_TO_GAME(ammo_stonersilencer);
-LINK_ENTITY_TO_GAME(ammo_stormcell);
-LINK_ENTITY_TO_GAME(ammo_stubcoolant);
-LINK_ENTITY_TO_GAME(ammo_stumpbox);
-LINK_ENTITY_TO_GAME(ammo_svd);
-LINK_ENTITY_TO_GAME(ammo_swarm_xen_secondary);
-LINK_ENTITY_TO_GAME(ammo_swarmprimary);
-LINK_ENTITY_TO_GAME(ammo_swarmsecondary);
-LINK_ENTITY_TO_GAME(ammo_synthol);
-LINK_ENTITY_TO_GAME(ammo_tec9);
-LINK_ENTITY_TO_GAME(ammo_thompson);
-LINK_ENTITY_TO_GAME(ammo_tommy);
-LINK_ENTITY_TO_GAME(ammo_tommygun);
-LINK_ENTITY_TO_GAME(ammo_trigun);
-LINK_ENTITY_TO_GAME(ammo_ump45);
-LINK_ENTITY_TO_GAME(ammo_uranium235);
-LINK_ENTITY_TO_GAME(ammo_uranium238);
-LINK_ENTITY_TO_GAME(ammo_usp);
-LINK_ENTITY_TO_GAME(ammo_uspclip);
-LINK_ENTITY_TO_GAME(ammo_uzi);
-LINK_ENTITY_TO_GAME(ammo_uziclip);
-LINK_ENTITY_TO_GAME(ammo_veprclip);
-LINK_ENTITY_TO_GAME(ammo_vomitclip);
-LINK_ENTITY_TO_GAME(ammo_vulcan);
-LINK_ENTITY_TO_GAME(ammo_wa2000);
-LINK_ENTITY_TO_GAME(ammo_webley);
-LINK_ENTITY_TO_GAME(ammo_whiskey);
-LINK_ENTITY_TO_GAME(ammo_winchester);
-LINK_ENTITY_TO_GAME(ammo_winchesterclip);
-LINK_ENTITY_TO_GAME(ammo_xbolts);
-LINK_ENTITY_TO_GAME(ammo_xm4);
-LINK_ENTITY_TO_GAME(ammo_xm4slug);
-LINK_ENTITY_TO_GAME(ammo_zmgclip);
-LINK_ENTITY_TO_GAME(ammobox);
-LINK_ENTITY_TO_GAME(antifric_timer);
-LINK_ENTITY_TO_GAME(antifriction_grenade);
-LINK_ENTITY_TO_GAME(arcade_points);
-LINK_ENTITY_TO_GAME(armoury_entity);
-LINK_ENTITY_TO_GAME(arms_dealer);
-LINK_ENTITY_TO_GAME(arrow);
-LINK_ENTITY_TO_GAME(asl_charge_flare);
-LINK_ENTITY_TO_GAME(aura);
-LINK_ENTITY_TO_GAME(authenticationmanager);
-LINK_ENTITY_TO_GAME(autogl_gren);
-LINK_ENTITY_TO_GAME(ball_launcher);
-LINK_ENTITY_TO_GAME(ball_lightning);
-LINK_ENTITY_TO_GAME(balle);
-LINK_ENTITY_TO_GAME(banana);
-LINK_ENTITY_TO_GAME(bankinterest);
-LINK_ENTITY_TO_GAME(barneymine);
-LINK_ENTITY_TO_GAME(base_drive_ent);
-LINK_ENTITY_TO_GAME(basecurse);
-LINK_ENTITY_TO_GAME(bb_ammo);
-LINK_ENTITY_TO_GAME(bb_custommission);
-LINK_ENTITY_TO_GAME(bb_equipment);
-LINK_ENTITY_TO_GAME(bb_escape_final);
-LINK_ENTITY_TO_GAME(bb_escape_radar);
-LINK_ENTITY_TO_GAME(bb_escapeair);
-LINK_ENTITY_TO_GAME(bb_funk);
-LINK_ENTITY_TO_GAME(bb_healthkit);
-LINK_ENTITY_TO_GAME(bb_mapmission);
-LINK_ENTITY_TO_GAME(bb_mission_zone);
-LINK_ENTITY_TO_GAME(bb_objective_item);
-LINK_ENTITY_TO_GAME(bb_objectives);
-LINK_ENTITY_TO_GAME(bb_spawn_player);
-LINK_ENTITY_TO_GAME(bb_spawn_zombie);
-LINK_ENTITY_TO_GAME(bb_tank);
-LINK_ENTITY_TO_GAME(bb_waypoint);
-LINK_ENTITY_TO_GAME(bb_zombie_player);
-LINK_ENTITY_TO_GAME(bbody);
-LINK_ENTITY_TO_GAME(beam);
-LINK_ENTITY_TO_GAME(beam_attack);
-LINK_ENTITY_TO_GAME(beamshot);
-LINK_ENTITY_TO_GAME(bean);
-LINK_ENTITY_TO_GAME(beanstalk);
-LINK_ENTITY_TO_GAME(bfg10k);
-LINK_ENTITY_TO_GAME(big_bang);
-LINK_ENTITY_TO_GAME(big_disk);
-LINK_ENTITY_TO_GAME(big_lance_proj);
-LINK_ENTITY_TO_GAME(bird);
-LINK_ENTITY_TO_GAME(black_hole);
-LINK_ENTITY_TO_GAME(blade);
-LINK_ENTITY_TO_GAME(blaster_beam);
-LINK_ENTITY_TO_GAME(blaster_bolt);
-LINK_ENTITY_TO_GAME(bmortar);
-LINK_ENTITY_TO_GAME(bodyque);
-LINK_ENTITY_TO_GAME(bone_follow);
-LINK_ENTITY_TO_GAME(boolean_multisource);
-LINK_ENTITY_TO_GAME(booty_it);
-LINK_ENTITY_TO_GAME(bot);
-LINK_ENTITY_TO_GAME(bot_waypoint);
-LINK_ENTITY_TO_GAME(bouncy_bolt);
-LINK_ENTITY_TO_GAME(bouncy_tripmine);
-LINK_ENTITY_TO_GAME(bowie_bolt);
-LINK_ENTITY_TO_GAME(bubgren);
-LINK_ENTITY_TO_GAME(building_dispenser);
-LINK_ENTITY_TO_GAME(building_sentrygun);
-LINK_ENTITY_TO_GAME(building_sentrygun_base);
-LINK_ENTITY_TO_GAME(building_teleporter);
-LINK_ENTITY_TO_GAME(bullet);
-LINK_ENTITY_TO_GAME(bumper_car_start);
-LINK_ENTITY_TO_GAME(burning_attack);
-LINK_ENTITY_TO_GAME(button_aiwallplug);
-LINK_ENTITY_TO_GAME(button_target);
-LINK_ENTITY_TO_GAME(calc_position);
-LINK_ENTITY_TO_GAME(calc_ratio);
-LINK_ENTITY_TO_GAME(calc_subvelocity);
-LINK_ENTITY_TO_GAME(calc_velocity_path);
-LINK_ENTITY_TO_GAME(calc_velocity_polar);
-LINK_ENTITY_TO_GAME(candy);
-LINK_ENTITY_TO_GAME(cannon_ball);
-LINK_ENTITY_TO_GAME(capture_point);
-LINK_ENTITY_TO_GAME(carried_book_team1);
-LINK_ENTITY_TO_GAME(carried_book_team2);
-LINK_ENTITY_TO_GAME(carried_flag_team1);
-LINK_ENTITY_TO_GAME(carried_flag_team2);
-LINK_ENTITY_TO_GAME(carry_resource);
-LINK_ENTITY_TO_GAME(carry_scientist);
-LINK_ENTITY_TO_GAME(ce_psi_01);
-LINK_ENTITY_TO_GAME(ce_rocket_01);
-LINK_ENTITY_TO_GAME(cflag);
-LINK_ENTITY_TO_GAME(chain_hurter);
-LINK_ENTITY_TO_GAME(charge);
-LINK_ENTITY_TO_GAME(charged_bolt);
-LINK_ENTITY_TO_GAME(chronoclip);
-LINK_ENTITY_TO_GAME(cine_blood);
-LINK_ENTITY_TO_GAME(clbaby);
-LINK_ENTITY_TO_GAME(clmomma);
-LINK_ENTITY_TO_GAME(cm_rocket_01);
-LINK_ENTITY_TO_GAME(cocklebur);
-LINK_ENTITY_TO_GAME(conc_charge);
-LINK_ENTITY_TO_GAME(control_forklift);
-LINK_ENTITY_TO_GAME(controller_charge_ball);
-LINK_ENTITY_TO_GAME(controller_charged_ball);
-LINK_ENTITY_TO_GAME(controller_energy_ball);
-LINK_ENTITY_TO_GAME(controller_head_ball);
-LINK_ENTITY_TO_GAME(controller_health_ball);
-LINK_ENTITY_TO_GAME(controller_throw_ball);
-LINK_ENTITY_TO_GAME(counter);
-LINK_ENTITY_TO_GAME(crossbow_bolt);
-LINK_ENTITY_TO_GAME(crowbar_rocket);
-LINK_ENTITY_TO_GAME(crowbarang);
-LINK_ENTITY_TO_GAME(crowd);
-LINK_ENTITY_TO_GAME(ctb_point_one);
-LINK_ENTITY_TO_GAME(ctb_point_two);
-LINK_ENTITY_TO_GAME(ctc_capturepoint);
-LINK_ENTITY_TO_GAME(ctc_chicken);
-LINK_ENTITY_TO_GAME(ctf_blueflag);
-LINK_ENTITY_TO_GAME(ctf_bluespawn);
-LINK_ENTITY_TO_GAME(ctf_cloak);
-LINK_ENTITY_TO_GAME(ctf_crowbar);
-LINK_ENTITY_TO_GAME(ctf_cycle);
-LINK_ENTITY_TO_GAME(ctf_flag);
-LINK_ENTITY_TO_GAME(ctf_flag_follow_blue);
-LINK_ENTITY_TO_GAME(ctf_flag_follow_red);
-LINK_ENTITY_TO_GAME(ctf_flagzone);
-LINK_ENTITY_TO_GAME(ctf_frag);
-LINK_ENTITY_TO_GAME(ctf_hook);
-LINK_ENTITY_TO_GAME(ctf_lowgrav);
-LINK_ENTITY_TO_GAME(ctf_protect);
-LINK_ENTITY_TO_GAME(ctf_redflag);
-LINK_ENTITY_TO_GAME(ctf_redspawn);
-LINK_ENTITY_TO_GAME(ctf_regen);
-LINK_ENTITY_TO_GAME(ctf_rune);
-LINK_ENTITY_TO_GAME(ctf_superglock);
-LINK_ENTITY_TO_GAME(ctf_trap);
-LINK_ENTITY_TO_GAME(ctf_vamp);
-LINK_ENTITY_TO_GAME(curse_spawner);
-LINK_ENTITY_TO_GAME(cust_11);
-LINK_ENTITY_TO_GAME(cust_12);
-LINK_ENTITY_TO_GAME(cust_13);
-LINK_ENTITY_TO_GAME(cust_21);
-LINK_ENTITY_TO_GAME(cust_22);
-LINK_ENTITY_TO_GAME(cust_24);
-LINK_ENTITY_TO_GAME(cust_25);
-LINK_ENTITY_TO_GAME(cust_2GaussPistolSniper);
-LINK_ENTITY_TO_GAME(cust_2MinigunCooled);
-LINK_ENTITY_TO_GAME(cust_31);
-LINK_ENTITY_TO_GAME(cust_33);
-LINK_ENTITY_TO_GAME(cust_34);
-LINK_ENTITY_TO_GAME(cust_41);
-LINK_ENTITY_TO_GAME(cust_43);
-LINK_ENTITY_TO_GAME(custom_precache);
-LINK_ENTITY_TO_GAME(cycler);
-LINK_ENTITY_TO_GAME(cycler_prdroid);
-LINK_ENTITY_TO_GAME(cycler_sprite);
-LINK_ENTITY_TO_GAME(cycler_weapon);
-LINK_ENTITY_TO_GAME(cycler_wreckage);
-LINK_ENTITY_TO_GAME(davespit);
-LINK_ENTITY_TO_GAME(db_spawner);
-LINK_ENTITY_TO_GAME(dc_info_objective);
-LINK_ENTITY_TO_GAME(dc_info_objectposition);
-LINK_ENTITY_TO_GAME(dc_object);
-LINK_ENTITY_TO_GAME(dc_trigger_objectcapture);
-LINK_ENTITY_TO_GAME(dc_trigger_reset);
-LINK_ENTITY_TO_GAME(dc_trigger_team);
-LINK_ENTITY_TO_GAME(deadcorpse);
-LINK_ENTITY_TO_GAME(deal_columbian_start);
-LINK_ENTITY_TO_GAME(deal_italian_start);
-LINK_ENTITY_TO_GAME(deal_swat_start);
-LINK_ENTITY_TO_GAME(dealer);
-LINK_ENTITY_TO_GAME(death_ball);
-LINK_ENTITY_TO_GAME(deathball);
-LINK_ENTITY_TO_GAME(deathsoul);
-LINK_ENTITY_TO_GAME(debris);
-LINK_ENTITY_TO_GAME(decore_aicore);
-LINK_ENTITY_TO_GAME(decore_asteroid);
-LINK_ENTITY_TO_GAME(decore_baboon);
-LINK_ENTITY_TO_GAME(decore_bodygib);
-LINK_ENTITY_TO_GAME(decore_butterflyflock);
-LINK_ENTITY_TO_GAME(decore_cactus);
-LINK_ENTITY_TO_GAME(decore_cam);
-LINK_ENTITY_TO_GAME(decore_corpse);
-LINK_ENTITY_TO_GAME(decore_eagle);
-LINK_ENTITY_TO_GAME(decore_explodable);
-LINK_ENTITY_TO_GAME(decore_foot);
-LINK_ENTITY_TO_GAME(decore_goldskull);
-LINK_ENTITY_TO_GAME(decore_gutspile);
-LINK_ENTITY_TO_GAME(decore_hatgib);
-LINK_ENTITY_TO_GAME(decore_ice);
-LINK_ENTITY_TO_GAME(decore_mushroom);
-LINK_ENTITY_TO_GAME(decore_mushroom2);
-LINK_ENTITY_TO_GAME(decore_nest);
-LINK_ENTITY_TO_GAME(decore_pipes);
-LINK_ENTITY_TO_GAME(decore_prickle);
-LINK_ENTITY_TO_GAME(decore_pteradon);
-LINK_ENTITY_TO_GAME(decore_scripted_boulder);
-LINK_ENTITY_TO_GAME(decore_sittingtubemortar);
-LINK_ENTITY_TO_GAME(decore_spacebebris);
-LINK_ENTITY_TO_GAME(decore_swampplants);
-LINK_ENTITY_TO_GAME(decore_torch);
-LINK_ENTITY_TO_GAME(decore_torchflame);
-LINK_ENTITY_TO_GAME(defensechamber);
-LINK_ENTITY_TO_GAME(demoman_mine);
-LINK_ENTITY_TO_GAME(detpack);
-LINK_ENTITY_TO_GAME(dg_streak_spiral);
-LINK_ENTITY_TO_GAME(disc);
-LINK_ENTITY_TO_GAME(disc_arena);
-LINK_ENTITY_TO_GAME(discarena);
-LINK_ENTITY_TO_GAME(dispball);
-LINK_ENTITY_TO_GAME(displacer_ball);
-LINK_ENTITY_TO_GAME(dmgmirrorcurse);
-LINK_ENTITY_TO_GAME(dmgscalecurse);
-LINK_ENTITY_TO_GAME(dod_ammo);
-LINK_ENTITY_TO_GAME(dod_ammo_depot);
-LINK_ENTITY_TO_GAME(dod_camera);
-LINK_ENTITY_TO_GAME(dod_capture_area);
-LINK_ENTITY_TO_GAME(dod_control_point);
-LINK_ENTITY_TO_GAME(dod_control_point_master);
-LINK_ENTITY_TO_GAME(dod_location);
-LINK_ENTITY_TO_GAME(dod_mapmarker);
-LINK_ENTITY_TO_GAME(dod_object);
-LINK_ENTITY_TO_GAME(dod_object_goal);
-LINK_ENTITY_TO_GAME(dod_point_relay);
-LINK_ENTITY_TO_GAME(dod_preround);
-LINK_ENTITY_TO_GAME(dod_round_timer);
-LINK_ENTITY_TO_GAME(dod_score_ent);
-LINK_ENTITY_TO_GAME(dod_secondary);
-LINK_ENTITY_TO_GAME(dod_stats);
-LINK_ENTITY_TO_GAME(dod_trigger_sandbag);
-LINK_ENTITY_TO_GAME(dove_flock);
-LINK_ENTITY_TO_GAME(dove_flyer);
-LINK_ENTITY_TO_GAME(dragonball);
-LINK_ENTITY_TO_GAME(drive_agrunt);
-LINK_ENTITY_TO_GAME(drive_agrunt_spawner);
-LINK_ENTITY_TO_GAME(drive_apache);
-LINK_ENTITY_TO_GAME(drive_apache_spawner);
-LINK_ENTITY_TO_GAME(drive_asl);
-LINK_ENTITY_TO_GAME(drive_assassin);
-LINK_ENTITY_TO_GAME(drive_assassin_spawner);
-LINK_ENTITY_TO_GAME(drive_bm);
-LINK_ENTITY_TO_GAME(drive_bm_spawner);
-LINK_ENTITY_TO_GAME(drive_bullsquid);
-LINK_ENTITY_TO_GAME(drive_bullsquid_spawner);
-LINK_ENTITY_TO_GAME(drive_chumtoad);
-LINK_ENTITY_TO_GAME(drive_controller);
-LINK_ENTITY_TO_GAME(drive_controller_spawner);
-LINK_ENTITY_TO_GAME(drive_garg);
-LINK_ENTITY_TO_GAME(drive_garg_spawner);
-LINK_ENTITY_TO_GAME(drive_headcrab);
-LINK_ENTITY_TO_GAME(drive_houndeye);
-LINK_ENTITY_TO_GAME(drive_houndeye_spawner);
-LINK_ENTITY_TO_GAME(drive_icky);
-LINK_ENTITY_TO_GAME(drive_icky_spawner);
-LINK_ENTITY_TO_GAME(drive_panth);
-LINK_ENTITY_TO_GAME(drive_panth_spawner);
-LINK_ENTITY_TO_GAME(drive_slave_spawner);
-LINK_ENTITY_TO_GAME(drive_turret);
-LINK_ENTITY_TO_GAME(drive_turret_spawner);
-LINK_ENTITY_TO_GAME(drop_bomb);
-LINK_ENTITY_TO_GAME(drunkcurse);
-LINK_ENTITY_TO_GAME(drv_hvr_rocket);
-LINK_ENTITY_TO_GAME(eagle_laser);
-LINK_ENTITY_TO_GAME(effect_shield);
-LINK_ENTITY_TO_GAME(egon_mirv);
-LINK_ENTITY_TO_GAME(emp_cannister);
-LINK_ENTITY_TO_GAME(emp_pulse);
-LINK_ENTITY_TO_GAME(entity_botcam);
-LINK_ENTITY_TO_GAME(entity_clustergod);
-LINK_ENTITY_TO_GAME(entity_digitgod);
-LINK_ENTITY_TO_GAME(entity_spawn_round);
-LINK_ENTITY_TO_GAME(entity_spritegod);
-LINK_ENTITY_TO_GAME(entity_volcanospew);
-LINK_ENTITY_TO_GAME(env_ClusterExplosion);
-LINK_ENTITY_TO_GAME(env_animsprite);
-LINK_ENTITY_TO_GAME(env_beam);
-LINK_ENTITY_TO_GAME(env_beamtrail);
-LINK_ENTITY_TO_GAME(env_beverage);
-LINK_ENTITY_TO_GAME(env_blood);
-LINK_ENTITY_TO_GAME(env_blowercannon);
-LINK_ENTITY_TO_GAME(env_bombglow);
-LINK_ENTITY_TO_GAME(env_bubbles);
-LINK_ENTITY_TO_GAME(env_customize);
-LINK_ENTITY_TO_GAME(env_debris);
-LINK_ENTITY_TO_GAME(env_decal);
-LINK_ENTITY_TO_GAME(env_dlight);
-LINK_ENTITY_TO_GAME(env_electrified_wire);
-LINK_ENTITY_TO_GAME(env_elight);
-LINK_ENTITY_TO_GAME(env_explosion);
-LINK_ENTITY_TO_GAME(env_fade);
-LINK_ENTITY_TO_GAME(env_fadeone);
-LINK_ENTITY_TO_GAME(env_fire);
-LINK_ENTITY_TO_GAME(env_flag);
-LINK_ENTITY_TO_GAME(env_fog);
-LINK_ENTITY_TO_GAME(env_footsteps);
-LINK_ENTITY_TO_GAME(env_fountain);
-LINK_ENTITY_TO_GAME(env_funnel);
-LINK_ENTITY_TO_GAME(env_gamma);
-LINK_ENTITY_TO_GAME(env_genewormcloud);
-LINK_ENTITY_TO_GAME(env_genewormspawn);
-LINK_ENTITY_TO_GAME(env_global);
-LINK_ENTITY_TO_GAME(env_glow);
-LINK_ENTITY_TO_GAME(env_laser);
-LINK_ENTITY_TO_GAME(env_lensflare);
-LINK_ENTITY_TO_GAME(env_lightning);
-LINK_ENTITY_TO_GAME(env_message);
-LINK_ENTITY_TO_GAME(env_model);
-LINK_ENTITY_TO_GAME(env_mp3);
-LINK_ENTITY_TO_GAME(env_music);
-LINK_ENTITY_TO_GAME(env_particle);
-LINK_ENTITY_TO_GAME(env_particleemitter);
-LINK_ENTITY_TO_GAME(env_particles);
-LINK_ENTITY_TO_GAME(env_particles_custom);
-LINK_ENTITY_TO_GAME(env_particule);
-LINK_ENTITY_TO_GAME(env_precip);
-LINK_ENTITY_TO_GAME(env_push);
-LINK_ENTITY_TO_GAME(env_quakefx);
-LINK_ENTITY_TO_GAME(env_rain);
-LINK_ENTITY_TO_GAME(env_render);
-LINK_ENTITY_TO_GAME(env_rocketshooter);
-LINK_ENTITY_TO_GAME(env_rope);
-LINK_ENTITY_TO_GAME(env_sentence);
-LINK_ENTITY_TO_GAME(env_shake);
-LINK_ENTITY_TO_GAME(env_shockwave);
-LINK_ENTITY_TO_GAME(env_shooter);
-LINK_ENTITY_TO_GAME(env_sky);
-LINK_ENTITY_TO_GAME(env_smoker);
-LINK_ENTITY_TO_GAME(env_snow);
-LINK_ENTITY_TO_GAME(env_sound);
-LINK_ENTITY_TO_GAME(env_spark);
-LINK_ENTITY_TO_GAME(env_spawnereffect);
-LINK_ENTITY_TO_GAME(env_sprite);
-LINK_ENTITY_TO_GAME(env_spriteshooter);
-LINK_ENTITY_TO_GAME(env_spritetrain);
-LINK_ENTITY_TO_GAME(env_state);
-LINK_ENTITY_TO_GAME(env_sun);
-LINK_ENTITY_TO_GAME(env_timer);
-LINK_ENTITY_TO_GAME(env_vgui);
-LINK_ENTITY_TO_GAME(env_warpball);
-LINK_ENTITY_TO_GAME(env_weather);
-LINK_ENTITY_TO_GAME(env_xenmaker);
-LINK_ENTITY_TO_GAME(equipment_parachute);
-LINK_ENTITY_TO_GAME(event_player_die);
-LINK_ENTITY_TO_GAME(event_player_join);
-LINK_ENTITY_TO_GAME(event_player_kill);
-LINK_ENTITY_TO_GAME(event_player_leave);
-LINK_ENTITY_TO_GAME(event_player_spawn);
-LINK_ENTITY_TO_GAME(event_round_end);
-LINK_ENTITY_TO_GAME(event_round_prestart);
-LINK_ENTITY_TO_GAME(event_round_reset);
-LINK_ENTITY_TO_GAME(event_round_start);
-LINK_ENTITY_TO_GAME(event_team_die);
-LINK_ENTITY_TO_GAME(event_team_win);
-LINK_ENTITY_TO_GAME(explode_bolt);
-LINK_ENTITY_TO_GAME(explodingattack);
-LINK_ENTITY_TO_GAME(explosive_slug);
-LINK_ENTITY_TO_GAME(external_cam);
-LINK_ENTITY_TO_GAME(extra_ammo);
-LINK_ENTITY_TO_GAME(fa_drop_zone);
-LINK_ENTITY_TO_GAME(fa_parachute);
-LINK_ENTITY_TO_GAME(fa_push_flag);
-LINK_ENTITY_TO_GAME(fa_push_point);
-LINK_ENTITY_TO_GAME(fa_sd_object);
-LINK_ENTITY_TO_GAME(fa_team_goal);
-LINK_ENTITY_TO_GAME(fa_team_item);
-LINK_ENTITY_TO_GAME(fading_corpse);
-LINK_ENTITY_TO_GAME(fev_cloud);
-LINK_ENTITY_TO_GAME(fev_vial);
-LINK_ENTITY_TO_GAME(final_flash);
-LINK_ENTITY_TO_GAME(finish);
-LINK_ENTITY_TO_GAME(fire_ball);
-LINK_ENTITY_TO_GAME(fireanddie);
-LINK_ENTITY_TO_GAME(firework);
-LINK_ENTITY_TO_GAME(flag);
-LINK_ENTITY_TO_GAME(flag_capture_point);
-LINK_ENTITY_TO_GAME(flag_follow);
-LINK_ENTITY_TO_GAME(flag_world);
-LINK_ENTITY_TO_GAME(flak_bomb);
-LINK_ENTITY_TO_GAME(flak_grenade);
-LINK_ENTITY_TO_GAME(flak_shard);
-LINK_ENTITY_TO_GAME(flakfrag);
-LINK_ENTITY_TO_GAME(flame);
-LINK_ENTITY_TO_GAME(flame_ball);
-LINK_ENTITY_TO_GAME(flame_chunk);
-LINK_ENTITY_TO_GAME(flamme);
-LINK_ENTITY_TO_GAME(flare);
-LINK_ENTITY_TO_GAME(flare_fire);
-LINK_ENTITY_TO_GAME(flying_axe);
-LINK_ENTITY_TO_GAME(flying_crowbar);
-LINK_ENTITY_TO_GAME(fog);
-LINK_ENTITY_TO_GAME(follow_ent);
-LINK_ENTITY_TO_GAME(followbot);
-LINK_ENTITY_TO_GAME(follower_basic);
-LINK_ENTITY_TO_GAME(football);
-LINK_ENTITY_TO_GAME(frag_grenade);
-LINK_ENTITY_TO_GAME(freeze_beam);
-LINK_ENTITY_TO_GAME(freeze_gel);
-LINK_ENTITY_TO_GAME(freeze_grenade);
-LINK_ENTITY_TO_GAME(freeze_timer);
-LINK_ENTITY_TO_GAME(friction_timer);
-LINK_ENTITY_TO_GAME(frostball);
-LINK_ENTITY_TO_GAME(fruit_sacrifice_point_team_green);
-LINK_ENTITY_TO_GAME(fruit_sacrifice_point_team_red);
-LINK_ENTITY_TO_GAME(func_airstrike_area);
-LINK_ENTITY_TO_GAME(func_ammoprovider);
-LINK_ENTITY_TO_GAME(func_ammostripper);
-LINK_ENTITY_TO_GAME(func_bankteller);
-LINK_ENTITY_TO_GAME(func_base);
-LINK_ENTITY_TO_GAME(func_bomb_target);
-LINK_ENTITY_TO_GAME(func_breakable);
-LINK_ENTITY_TO_GAME(func_breakpoints);
-LINK_ENTITY_TO_GAME(func_button);
-LINK_ENTITY_TO_GAME(func_buyzone);
-LINK_ENTITY_TO_GAME(func_capture_area);
-LINK_ENTITY_TO_GAME(func_capturepoint);
-LINK_ENTITY_TO_GAME(func_clouds);
-LINK_ENTITY_TO_GAME(func_conveyor);
-LINK_ENTITY_TO_GAME(func_corruptsecurity);
-LINK_ENTITY_TO_GAME(func_ctb);
-LINK_ENTITY_TO_GAME(func_destroy_objective);
-LINK_ENTITY_TO_GAME(func_disctoggle);
-LINK_ENTITY_TO_GAME(func_door);
-LINK_ENTITY_TO_GAME(func_door2);
-LINK_ENTITY_TO_GAME(func_door_rotating);
-LINK_ENTITY_TO_GAME(func_elevator);
-LINK_ENTITY_TO_GAME(func_escapezone);
-LINK_ENTITY_TO_GAME(func_friction);
-LINK_ENTITY_TO_GAME(func_goal_zone);
-LINK_ENTITY_TO_GAME(func_goalpoint);
-LINK_ENTITY_TO_GAME(func_golem_body);
-LINK_ENTITY_TO_GAME(func_golem_controls_attack);
-LINK_ENTITY_TO_GAME(func_golem_controls_forward);
-LINK_ENTITY_TO_GAME(func_golem_controls_left);
-LINK_ENTITY_TO_GAME(func_golem_controls_right);
-LINK_ENTITY_TO_GAME(func_golem_leftarm);
-LINK_ENTITY_TO_GAME(func_golem_leftleg);
-LINK_ENTITY_TO_GAME(func_golem_rightarm);
-LINK_ENTITY_TO_GAME(func_golem_rightleg);
-LINK_ENTITY_TO_GAME(func_grencatch);
-LINK_ENTITY_TO_GAME(func_guntarget);
-LINK_ENTITY_TO_GAME(func_healthcharger);
-LINK_ENTITY_TO_GAME(func_hostage_rescue);
-LINK_ENTITY_TO_GAME(func_illusionary);
-LINK_ENTITY_TO_GAME(func_jail_breakable);
-LINK_ENTITY_TO_GAME(func_jail_button);
-LINK_ENTITY_TO_GAME(func_jail_door);
-LINK_ENTITY_TO_GAME(func_jail_door_rotating);
-LINK_ENTITY_TO_GAME(func_jail_pushable);
-LINK_ENTITY_TO_GAME(func_jail_release);
-LINK_ENTITY_TO_GAME(func_ladder);
-LINK_ENTITY_TO_GAME(func_laddertype);
-LINK_ENTITY_TO_GAME(func_land_transport);
-LINK_ENTITY_TO_GAME(func_landtransport);
-LINK_ENTITY_TO_GAME(func_modeltank);
-LINK_ENTITY_TO_GAME(func_modelvehicle);
-LINK_ENTITY_TO_GAME(func_modelvehiclemodel);
-LINK_ENTITY_TO_GAME(func_monsterclip);
-LINK_ENTITY_TO_GAME(func_mortar_field);
-LINK_ENTITY_TO_GAME(func_music);
-LINK_ENTITY_TO_GAME(func_needs);
-LINK_ENTITY_TO_GAME(func_needs_boredom);
-LINK_ENTITY_TO_GAME(func_needs_dirty);
-LINK_ENTITY_TO_GAME(func_needs_drink);
-LINK_ENTITY_TO_GAME(func_needs_eat);
-LINK_ENTITY_TO_GAME(func_needs_fatigue);
-LINK_ENTITY_TO_GAME(func_needs_lonely);
-LINK_ENTITY_TO_GAME(func_needs_pee);
-LINK_ENTITY_TO_GAME(func_needs_poo);
-LINK_ENTITY_TO_GAME(func_nobuild);
-LINK_ENTITY_TO_GAME(func_nogrenades);
-LINK_ENTITY_TO_GAME(func_op4mortarcontroller);
-LINK_ENTITY_TO_GAME(func_particle_system);
-LINK_ENTITY_TO_GAME(func_pendulum);
-LINK_ENTITY_TO_GAME(func_physics);
-LINK_ENTITY_TO_GAME(func_pillageable);
-LINK_ENTITY_TO_GAME(func_plat);
-LINK_ENTITY_TO_GAME(func_plat_toggleremove);
-LINK_ENTITY_TO_GAME(func_platrot);
-LINK_ENTITY_TO_GAME(func_player_start);
-LINK_ENTITY_TO_GAME(func_point);
-LINK_ENTITY_TO_GAME(func_possesion);
-LINK_ENTITY_TO_GAME(func_protect);
-LINK_ENTITY_TO_GAME(func_pushable);
-LINK_ENTITY_TO_GAME(func_rain);
-LINK_ENTITY_TO_GAME(func_recharge);
-LINK_ENTITY_TO_GAME(func_reset);
-LINK_ENTITY_TO_GAME(func_resource);
-LINK_ENTITY_TO_GAME(func_rot_button);
-LINK_ENTITY_TO_GAME(func_rotating);
-LINK_ENTITY_TO_GAME(func_searchlight);
-LINK_ENTITY_TO_GAME(func_securityzone);
-LINK_ENTITY_TO_GAME(func_seethrough);
-LINK_ENTITY_TO_GAME(func_seethroughdoor);
-LINK_ENTITY_TO_GAME(func_shine);
-LINK_ENTITY_TO_GAME(func_sickbay_bed);
-LINK_ENTITY_TO_GAME(func_sickbay_psych);
-LINK_ENTITY_TO_GAME(func_snow);
-LINK_ENTITY_TO_GAME(func_tank);
-LINK_ENTITY_TO_GAME(func_tank_gauss);
-LINK_ENTITY_TO_GAME(func_tank_of);
-LINK_ENTITY_TO_GAME(func_tank_turret);
-LINK_ENTITY_TO_GAME(func_tankbase);
-LINK_ENTITY_TO_GAME(func_tankcannon);
-LINK_ENTITY_TO_GAME(func_tankcontrols);
-LINK_ENTITY_TO_GAME(func_tankcontrols_of);
-LINK_ENTITY_TO_GAME(func_tankdrive);
-LINK_ENTITY_TO_GAME(func_tankgib);
-LINK_ENTITY_TO_GAME(func_tankgib_gib);
-LINK_ENTITY_TO_GAME(func_tankgoauld);
-LINK_ENTITY_TO_GAME(func_tanklaser);
-LINK_ENTITY_TO_GAME(func_tanklaser_of);
-LINK_ENTITY_TO_GAME(func_tankmg);
-LINK_ENTITY_TO_GAME(func_tankmortar);
-LINK_ENTITY_TO_GAME(func_tankmortar_of);
-LINK_ENTITY_TO_GAME(func_tankrocket);
-LINK_ENTITY_TO_GAME(func_tankrocket_of);
-LINK_ENTITY_TO_GAME(func_tanktarget);
-LINK_ENTITY_TO_GAME(func_tbutton);
-LINK_ENTITY_TO_GAME(func_tech_breakable);
-LINK_ENTITY_TO_GAME(func_trackautochange);
-LINK_ENTITY_TO_GAME(func_trackchange);
-LINK_ENTITY_TO_GAME(func_tracktrain);
-LINK_ENTITY_TO_GAME(func_train);
-LINK_ENTITY_TO_GAME(func_traincontrols);
-LINK_ENTITY_TO_GAME(func_trenchcap1);
-LINK_ENTITY_TO_GAME(func_trenchcap2);
-LINK_ENTITY_TO_GAME(func_trenchcap3);
-LINK_ENTITY_TO_GAME(func_trenchcap4);
-LINK_ENTITY_TO_GAME(func_use);
-LINK_ENTITY_TO_GAME(func_vehicle);
-LINK_ENTITY_TO_GAME(func_vehiclecontrols);
-LINK_ENTITY_TO_GAME(func_vehicletankcontrols);
-LINK_ENTITY_TO_GAME(func_vine);
-LINK_ENTITY_TO_GAME(func_vip_safetyzone);
-LINK_ENTITY_TO_GAME(func_wall);
-LINK_ENTITY_TO_GAME(func_wall_toggle);
-LINK_ENTITY_TO_GAME(func_wardrobe);
-LINK_ENTITY_TO_GAME(func_water);
-LINK_ENTITY_TO_GAME(func_water_up);
-LINK_ENTITY_TO_GAME(func_weaponcheck);
-LINK_ENTITY_TO_GAME(func_weldable);
-LINK_ENTITY_TO_GAME(func_wind);
-LINK_ENTITY_TO_GAME(game_clock);
-LINK_ENTITY_TO_GAME(game_counter);
-LINK_ENTITY_TO_GAME(game_counter_set);
-LINK_ENTITY_TO_GAME(game_end);
-LINK_ENTITY_TO_GAME(game_endbattle);
-LINK_ENTITY_TO_GAME(game_item);
-LINK_ENTITY_TO_GAME(game_levelmusic);
-LINK_ENTITY_TO_GAME(game_nuke);
-LINK_ENTITY_TO_GAME(game_player_die);
-LINK_ENTITY_TO_GAME(game_player_equip);
-LINK_ENTITY_TO_GAME(game_player_hurt);
-LINK_ENTITY_TO_GAME(game_player_message);
-LINK_ENTITY_TO_GAME(game_player_team);
-LINK_ENTITY_TO_GAME(game_playerdie);
-LINK_ENTITY_TO_GAME(game_roundend);
-LINK_ENTITY_TO_GAME(game_score);
-LINK_ENTITY_TO_GAME(game_team_master);
-LINK_ENTITY_TO_GAME(game_team_score);
-LINK_ENTITY_TO_GAME(game_team_set);
-LINK_ENTITY_TO_GAME(game_team_win);
-LINK_ENTITY_TO_GAME(game_text);
-LINK_ENTITY_TO_GAME(game_zone_pirscore);
-LINK_ENTITY_TO_GAME(game_zone_player);
-LINK_ENTITY_TO_GAME(game_zone_territory);
-LINK_ENTITY_TO_GAME(game_zone_vikscore);
-LINK_ENTITY_TO_GAME(gameclock);
-LINK_ENTITY_TO_GAME(garg_hull);
-LINK_ENTITY_TO_GAME(garg_stomp);
-LINK_ENTITY_TO_GAME(gauss_becon);
-LINK_ENTITY_TO_GAME(generic_model);
-LINK_ENTITY_TO_GAME(getGlobalStunLevel);
-LINK_ENTITY_TO_GAME(ghost);
-LINK_ENTITY_TO_GAME(gibable_corpse);
-LINK_ENTITY_TO_GAME(gibshooter);
-LINK_ENTITY_TO_GAME(glock_gib);
-LINK_ENTITY_TO_GAME(glock_stickygib);
-LINK_ENTITY_TO_GAME(gluon);
-LINK_ENTITY_TO_GAME(gluon2);
-LINK_ENTITY_TO_GAME(gonarch_headcrabifier);
-LINK_ENTITY_TO_GAME(gonomeguts);
-LINK_ENTITY_TO_GAME(gonomespit);
-LINK_ENTITY_TO_GAME(gr_shell);
-LINK_ENTITY_TO_GAME(grapple_bolt);
-LINK_ENTITY_TO_GAME(grapple_hook);
-LINK_ENTITY_TO_GAME(grapple_tip);
-LINK_ENTITY_TO_GAME(grappletongue);
-LINK_ENTITY_TO_GAME(gravity_grenade);
-LINK_ENTITY_TO_GAME(gren_projectile);
-LINK_ENTITY_TO_GAME(gren_smoke);
-LINK_ENTITY_TO_GAME(grenade);
-LINK_ENTITY_TO_GAME(guard_info);
-LINK_ENTITY_TO_GAME(guidedattack);
-LINK_ENTITY_TO_GAME(gunmancycler);
-LINK_ENTITY_TO_GAME(hallucgrenade);
-LINK_ENTITY_TO_GAME(halo_base);
-LINK_ENTITY_TO_GAME(hand_knife);
-LINK_ENTITY_TO_GAME(he_charge_flare);
-LINK_ENTITY_TO_GAME(he_eye_flare);
-LINK_ENTITY_TO_GAME(headcrab_teather);
-LINK_ENTITY_TO_GAME(hegrenade);
-LINK_ENTITY_TO_GAME(hellfire);
-LINK_ENTITY_TO_GAME(hi_bomb_zone);
-LINK_ENTITY_TO_GAME(hi_button_load);
-LINK_ENTITY_TO_GAME(hi_coop_tango);
-LINK_ENTITY_TO_GAME(hi_fog);
-LINK_ENTITY_TO_GAME(hi_global);
-LINK_ENTITY_TO_GAME(hi_hostage);
-LINK_ENTITY_TO_GAME(hi_hostage_rescue);
-LINK_ENTITY_TO_GAME(hi_hostage_respawn);
-LINK_ENTITY_TO_GAME(hi_nameposition);
-LINK_ENTITY_TO_GAME(hi_objective);
-LINK_ENTITY_TO_GAME(hi_objective_manager);
-LINK_ENTITY_TO_GAME(hi_round_timer);
-LINK_ENTITY_TO_GAME(hi_spawn_hostage);
-LINK_ENTITY_TO_GAME(hi_spawn_nato);
-LINK_ENTITY_TO_GAME(hi_spawn_observer);
-LINK_ENTITY_TO_GAME(hi_spawn_tango);
-LINK_ENTITY_TO_GAME(hlight);
-LINK_ENTITY_TO_GAME(hltr_assaut_boutton);
-LINK_ENTITY_TO_GAME(hltr_hostage);
-LINK_ENTITY_TO_GAME(hltr_object);
-LINK_ENTITY_TO_GAME(hltr_object_tombe);
-LINK_ENTITY_TO_GAME(hltr_objectcapture);
-LINK_ENTITY_TO_GAME(hltr_objectif);
-LINK_ENTITY_TO_GAME(hltr_objectif_num);
-LINK_ENTITY_TO_GAME(hltr_passant);
-LINK_ENTITY_TO_GAME(hltr_spectator_start);
-LINK_ENTITY_TO_GAME(hltr_turret);
-LINK_ENTITY_TO_GAME(hltr_waypoint);
-LINK_ENTITY_TO_GAME(holo_player);
-LINK_ENTITY_TO_GAME(hologram_beak);
-LINK_ENTITY_TO_GAME(hologram_damage);
-LINK_ENTITY_TO_GAME(holywars_rocket);
-LINK_ENTITY_TO_GAME(homing_balls);
-LINK_ENTITY_TO_GAME(hornet);
-LINK_ENTITY_TO_GAME(hospital);
-LINK_ENTITY_TO_GAME(hostage_entity);
-LINK_ENTITY_TO_GAME(hud_sprite);
-LINK_ENTITY_TO_GAME(human_flashgrenade);
-LINK_ENTITY_TO_GAME(hvr_blkop_rocket);
-LINK_ENTITY_TO_GAME(hvr_rocket);
-LINK_ENTITY_TO_GAME(i_p_t);
-LINK_ENTITY_TO_GAME(i_t_g);
-LINK_ENTITY_TO_GAME(i_t_t);
-LINK_ENTITY_TO_GAME(i_w_g);
-LINK_ENTITY_TO_GAME(i_w_t);
-LINK_ENTITY_TO_GAME(iflame);
-LINK_ENTITY_TO_GAME(impact_sprite);
-LINK_ENTITY_TO_GAME(impail_arrow);
-LINK_ENTITY_TO_GAME(impailer);
-LINK_ENTITY_TO_GAME(impgren);
-LINK_ENTITY_TO_GAME(implode_timer);
-LINK_ENTITY_TO_GAME(in_shell);
-LINK_ENTITY_TO_GAME(incendiary_rocket);
-LINK_ENTITY_TO_GAME(indian_arrow);
-LINK_ENTITY_TO_GAME(infect);
-LINK_ENTITY_TO_GAME(info_Waterdetect);
-LINK_ENTITY_TO_GAME(info_administrator);
-LINK_ENTITY_TO_GAME(info_airstrike_node);
-LINK_ENTITY_TO_GAME(info_alarm);
-LINK_ENTITY_TO_GAME(info_alias);
-LINK_ENTITY_TO_GAME(info_alien_return);
-LINK_ENTITY_TO_GAME(info_alien_start);
-LINK_ENTITY_TO_GAME(info_american_line);
-LINK_ENTITY_TO_GAME(info_areadef);
-LINK_ENTITY_TO_GAME(info_areamarker);
-LINK_ENTITY_TO_GAME(info_ball_start);
-LINK_ENTITY_TO_GAME(info_banana_green_capture);
-LINK_ENTITY_TO_GAME(info_banana_red_capture);
-LINK_ENTITY_TO_GAME(info_bananier);
-LINK_ENTITY_TO_GAME(info_bg_detect);
-LINK_ENTITY_TO_GAME(info_bigmomma);
-LINK_ENTITY_TO_GAME(info_bomb_target);
-LINK_ENTITY_TO_GAME(info_bone);
-LINK_ENTITY_TO_GAME(info_bone_spawn);
-LINK_ENTITY_TO_GAME(info_boobytrap);
-LINK_ENTITY_TO_GAME(info_botlandmark);
-LINK_ENTITY_TO_GAME(info_botnode);
-LINK_ENTITY_TO_GAME(info_british_line);
-LINK_ENTITY_TO_GAME(info_button_phonebooth);
-LINK_ENTITY_TO_GAME(info_caisse_128);
-LINK_ENTITY_TO_GAME(info_caisse_16);
-LINK_ENTITY_TO_GAME(info_caisse_256);
-LINK_ENTITY_TO_GAME(info_caisse_32);
-LINK_ENTITY_TO_GAME(info_caisse_64);
-LINK_ENTITY_TO_GAME(info_camera);
-LINK_ENTITY_TO_GAME(info_cap_rules);
-LINK_ENTITY_TO_GAME(info_checkpoint);
-LINK_ENTITY_TO_GAME(info_chicken);
-LINK_ENTITY_TO_GAME(info_chip);
-LINK_ENTITY_TO_GAME(info_civ_start);
-LINK_ENTITY_TO_GAME(info_compile_parameters);
-LINK_ENTITY_TO_GAME(info_css);
-LINK_ENTITY_TO_GAME(info_ctb_controller);
-LINK_ENTITY_TO_GAME(info_ctfdetect);
-LINK_ENTITY_TO_GAME(info_ctfspawn);
-LINK_ENTITY_TO_GAME(info_ctfspawn_powerup);
-LINK_ENTITY_TO_GAME(info_curtain);
-LINK_ENTITY_TO_GAME(info_deathball_spawn);
-LINK_ENTITY_TO_GAME(info_defaultammo);
-LINK_ENTITY_TO_GAME(info_displacer_earth_target);
-LINK_ENTITY_TO_GAME(info_displacer_xen_target);
-LINK_ENTITY_TO_GAME(info_dm );
-LINK_ENTITY_TO_GAME(info_doddetect);
-LINK_ENTITY_TO_GAME(info_dragonrider_spawn);
-LINK_ENTITY_TO_GAME(info_draw_slayerswin);
-LINK_ENTITY_TO_GAME(info_draw_vampireswin);
-LINK_ENTITY_TO_GAME(info_drive_agrunt_spawn);
-LINK_ENTITY_TO_GAME(info_drive_apache_spawn);
-LINK_ENTITY_TO_GAME(info_drive_assassin_spawn);
-LINK_ENTITY_TO_GAME(info_drive_bm_spawn);
-LINK_ENTITY_TO_GAME(info_drive_bullsquid_spawn);
-LINK_ENTITY_TO_GAME(info_drive_controller_spawn);
-LINK_ENTITY_TO_GAME(info_drive_garg_spawn);
-LINK_ENTITY_TO_GAME(info_drive_houndeye_spawn);
-LINK_ENTITY_TO_GAME(info_drive_icky_spawn);
-LINK_ENTITY_TO_GAME(info_drive_panth_spawn);
-LINK_ENTITY_TO_GAME(info_drive_slave_spawn);
-LINK_ENTITY_TO_GAME(info_drive_turret_spawn);
-LINK_ENTITY_TO_GAME(info_elephant);
-LINK_ENTITY_TO_GAME(info_elev_floor);
-LINK_ENTITY_TO_GAME(info_escape_start);
-LINK_ENTITY_TO_GAME(info_escape_target);
-LINK_ENTITY_TO_GAME(info_evil_start);
-LINK_ENTITY_TO_GAME(info_firearms_detect);
-LINK_ENTITY_TO_GAME(info_firstround_spawn);
-LINK_ENTITY_TO_GAME(info_flagspawn);
-LINK_ENTITY_TO_GAME(info_flash);
-LINK_ENTITY_TO_GAME(info_frontline);
-LINK_ENTITY_TO_GAME(info_gameplay);
-LINK_ENTITY_TO_GAME(info_gameplaylogic);
-LINK_ENTITY_TO_GAME(info_gangsta_dm_start);
-LINK_ENTITY_TO_GAME(info_goldeneye);
-LINK_ENTITY_TO_GAME(info_good_start);
-LINK_ENTITY_TO_GAME(info_group);
-LINK_ENTITY_TO_GAME(info_gwGeneral_spawn);
-LINK_ENTITY_TO_GAME(info_gwars_map);
-LINK_ENTITY_TO_GAME(info_gwbriefing_spawn);
-LINK_ENTITY_TO_GAME(info_gwinmap_spawn);
-LINK_ENTITY_TO_GAME(info_gwplayer_spawn);
-LINK_ENTITY_TO_GAME(info_gwwaiting_spawn);
-LINK_ENTITY_TO_GAME(info_hlpaintctfdetect);
-LINK_ENTITY_TO_GAME(info_hmctfdetect);
-LINK_ENTITY_TO_GAME(info_hostage_rescue);
-LINK_ENTITY_TO_GAME(info_hostage_safezone);
-LINK_ENTITY_TO_GAME(info_human_return);
-LINK_ENTITY_TO_GAME(info_human_start);
-LINK_ENTITY_TO_GAME(info_initial_player_allies);
-LINK_ENTITY_TO_GAME(info_initial_player_axis);
-LINK_ENTITY_TO_GAME(info_intermission);
-LINK_ENTITY_TO_GAME(info_italian_start);
-LINK_ENTITY_TO_GAME(info_jail_start);
-LINK_ENTITY_TO_GAME(info_join_autoassign);
-LINK_ENTITY_TO_GAME(info_join_team);
-LINK_ENTITY_TO_GAME(info_jumppad_target);
-LINK_ENTITY_TO_GAME(info_jwhite_capture);
-LINK_ENTITY_TO_GAME(info_jwhite_escape);
-LINK_ENTITY_TO_GAME(info_jwhite_rescue);
-LINK_ENTITY_TO_GAME(info_kb_deathmatch);
-LINK_ENTITY_TO_GAME(info_lacrymo);
-LINK_ENTITY_TO_GAME(info_landmark);
-LINK_ENTITY_TO_GAME(info_landmine);
-LINK_ENTITY_TO_GAME(info_leave_game);
-LINK_ENTITY_TO_GAME(info_location);
-LINK_ENTITY_TO_GAME(info_map_parameters);
-LINK_ENTITY_TO_GAME(info_mapdetect);
-LINK_ENTITY_TO_GAME(info_mapinfo);
-LINK_ENTITY_TO_GAME(info_marguerite);
-LINK_ENTITY_TO_GAME(info_marker);
-LINK_ENTITY_TO_GAME(info_minefield);
-LINK_ENTITY_TO_GAME(info_model);
-LINK_ENTITY_TO_GAME(info_money_start);
-LINK_ENTITY_TO_GAME(info_monkey_start_team_green);
-LINK_ENTITY_TO_GAME(info_monkey_start_team_red);
-LINK_ENTITY_TO_GAME(info_monster_return);
-LINK_ENTITY_TO_GAME(info_monster_start);
-LINK_ENTITY_TO_GAME(info_morbid);
-LINK_ENTITY_TO_GAME(info_morbid_start);
-LINK_ENTITY_TO_GAME(info_movewith);
-LINK_ENTITY_TO_GAME(info_msdetect);
-LINK_ENTITY_TO_GAME(info_multiple);
-LINK_ENTITY_TO_GAME(info_next_map);
-LINK_ENTITY_TO_GAME(info_node);
-LINK_ENTITY_TO_GAME(info_node_air);
-LINK_ENTITY_TO_GAME(info_nomines);
-LINK_ENTITY_TO_GAME(info_null);
-LINK_ENTITY_TO_GAME(info_objective);
-LINK_ENTITY_TO_GAME(info_observer);
-LINK_ENTITY_TO_GAME(info_observer_start);
-LINK_ENTITY_TO_GAME(info_orientation);
-LINK_ENTITY_TO_GAME(info_paintball);
-LINK_ENTITY_TO_GAME(info_particles);
-LINK_ENTITY_TO_GAME(info_physics);
-LINK_ENTITY_TO_GAME(info_pitworm);
-LINK_ENTITY_TO_GAME(info_pitworm_steam_lock);
-LINK_ENTITY_TO_GAME(info_player_allies);
-LINK_ENTITY_TO_GAME(info_player_american);
-LINK_ENTITY_TO_GAME(info_player_attacker);
-LINK_ENTITY_TO_GAME(info_player_axis);
-LINK_ENTITY_TO_GAME(info_player_blue);
-LINK_ENTITY_TO_GAME(info_player_british);
-LINK_ENTITY_TO_GAME(info_player_coop);
-LINK_ENTITY_TO_GAME(info_player_deadstart);
-LINK_ENTITY_TO_GAME(info_player_deathmatch);
-LINK_ENTITY_TO_GAME(info_player_deathmatch_reverse);
-LINK_ENTITY_TO_GAME(info_player_defender);
-LINK_ENTITY_TO_GAME(info_player_dm2);
-LINK_ENTITY_TO_GAME(info_player_equip);
-LINK_ENTITY_TO_GAME(info_player_goauld);
-LINK_ENTITY_TO_GAME(info_player_jail);
-LINK_ENTITY_TO_GAME(info_player_judge);
-LINK_ENTITY_TO_GAME(info_player_knight);
-LINK_ENTITY_TO_GAME(info_player_marine);
-LINK_ENTITY_TO_GAME(info_player_nva_reenforcement);
-LINK_ENTITY_TO_GAME(info_player_observer);
-LINK_ENTITY_TO_GAME(info_player_perp);
-LINK_ENTITY_TO_GAME(info_player_pirate);
-LINK_ENTITY_TO_GAME(info_player_red);
-LINK_ENTITY_TO_GAME(info_player_respawn);
-LINK_ENTITY_TO_GAME(info_player_slayer);
-LINK_ENTITY_TO_GAME(info_player_spectator);
-LINK_ENTITY_TO_GAME(info_player_start);
-LINK_ENTITY_TO_GAME(info_player_start_prox);
-LINK_ENTITY_TO_GAME(info_player_start_reverse);
-LINK_ENTITY_TO_GAME(info_player_team1);
-LINK_ENTITY_TO_GAME(info_player_team2);
-LINK_ENTITY_TO_GAME(info_player_team_at);
-LINK_ENTITY_TO_GAME(info_player_team_bt);
-LINK_ENTITY_TO_GAME(info_player_team_ce);
-LINK_ENTITY_TO_GAME(info_player_team_cm);
-LINK_ENTITY_TO_GAME(info_player_team_gf);
-LINK_ENTITY_TO_GAME(info_player_team_iw);
-LINK_ENTITY_TO_GAME(info_player_team_s);
-LINK_ENTITY_TO_GAME(info_player_team_sm);
-LINK_ENTITY_TO_GAME(info_player_team_st);
-LINK_ENTITY_TO_GAME(info_player_team_we);
-LINK_ENTITY_TO_GAME(info_player_teamspawn);
-LINK_ENTITY_TO_GAME(info_player_torri);
-LINK_ENTITY_TO_GAME(info_player_unas);
-LINK_ENTITY_TO_GAME(info_player_usmc_reenforcement);
-LINK_ENTITY_TO_GAME(info_player_vampire);
-LINK_ENTITY_TO_GAME(info_player_viking);
-LINK_ENTITY_TO_GAME(info_playerstart_blue);
-LINK_ENTITY_TO_GAME(info_playerstart_red);
-LINK_ENTITY_TO_GAME(info_pvk);
-LINK_ENTITY_TO_GAME(info_radar_block);
-LINK_ENTITY_TO_GAME(info_rescue_monster);
-LINK_ENTITY_TO_GAME(info_rescue_point);
-LINK_ENTITY_TO_GAME(info_reset);
-LINK_ENTITY_TO_GAME(info_robot_return);
-LINK_ENTITY_TO_GAME(info_robot_start);
-LINK_ENTITY_TO_GAME(info_roundx_spawn);
-LINK_ENTITY_TO_GAME(info_russian_start);
-LINK_ENTITY_TO_GAME(info_sapin);
-LINK_ENTITY_TO_GAME(info_scientist);
-LINK_ENTITY_TO_GAME(info_scientist_dead);
-LINK_ENTITY_TO_GAME(info_scientist_start);
-LINK_ENTITY_TO_GAME(info_semi_null);
-LINK_ENTITY_TO_GAME(info_sidetect);
-LINK_ENTITY_TO_GAME(info_spawn_container);
-LINK_ENTITY_TO_GAME(info_spectate);
-LINK_ENTITY_TO_GAME(info_sprite);
-LINK_ENTITY_TO_GAME(info_stadium);
-LINK_ENTITY_TO_GAME(info_status);
-LINK_ENTITY_TO_GAME(info_swat_start);
-LINK_ENTITY_TO_GAME(info_target);
-LINK_ENTITY_TO_GAME(info_team);
-LINK_ENTITY_TO_GAME(info_team1_corner0);
-LINK_ENTITY_TO_GAME(info_team1_corner1);
-LINK_ENTITY_TO_GAME(info_team1_corner_player0);
-LINK_ENTITY_TO_GAME(info_team1_corner_player1);
-LINK_ENTITY_TO_GAME(info_team1_goalkick0);
-LINK_ENTITY_TO_GAME(info_team1_goalkick1);
-LINK_ENTITY_TO_GAME(info_team1_penalty_spot);
-LINK_ENTITY_TO_GAME(info_team1_player1);
-LINK_ENTITY_TO_GAME(info_team1_player10);
-LINK_ENTITY_TO_GAME(info_team1_player11);
-LINK_ENTITY_TO_GAME(info_team1_player2);
-LINK_ENTITY_TO_GAME(info_team1_player3);
-LINK_ENTITY_TO_GAME(info_team1_player4);
-LINK_ENTITY_TO_GAME(info_team1_player5);
-LINK_ENTITY_TO_GAME(info_team1_player6);
-LINK_ENTITY_TO_GAME(info_team1_player7);
-LINK_ENTITY_TO_GAME(info_team1_player8);
-LINK_ENTITY_TO_GAME(info_team1_player9);
-LINK_ENTITY_TO_GAME(info_team2_corner0);
-LINK_ENTITY_TO_GAME(info_team2_corner1);
-LINK_ENTITY_TO_GAME(info_team2_corner_player0);
-LINK_ENTITY_TO_GAME(info_team2_corner_player1);
-LINK_ENTITY_TO_GAME(info_team2_goalkick0);
-LINK_ENTITY_TO_GAME(info_team2_goalkick1);
-LINK_ENTITY_TO_GAME(info_team2_penalty_spot);
-LINK_ENTITY_TO_GAME(info_team2_player1);
-LINK_ENTITY_TO_GAME(info_team2_player10);
-LINK_ENTITY_TO_GAME(info_team2_player11);
-LINK_ENTITY_TO_GAME(info_team2_player2);
-LINK_ENTITY_TO_GAME(info_team2_player3);
-LINK_ENTITY_TO_GAME(info_team2_player4);
-LINK_ENTITY_TO_GAME(info_team2_player5);
-LINK_ENTITY_TO_GAME(info_team2_player6);
-LINK_ENTITY_TO_GAME(info_team2_player7);
-LINK_ENTITY_TO_GAME(info_team2_player8);
-LINK_ENTITY_TO_GAME(info_team2_player9);
-LINK_ENTITY_TO_GAME(info_team_base);
-LINK_ENTITY_TO_GAME(info_team_ronin);
-LINK_ENTITY_TO_GAME(info_team_scavenger);
-LINK_ENTITY_TO_GAME(info_team_start);
-LINK_ENTITY_TO_GAME(info_team_usmc);
-LINK_ENTITY_TO_GAME(info_teamplaydetect);
-LINK_ENTITY_TO_GAME(info_teamspawn);
-LINK_ENTITY_TO_GAME(info_teleport_destination);
-LINK_ENTITY_TO_GAME(info_texlights);
-LINK_ENTITY_TO_GAME(info_tf_teamcheck);
-LINK_ENTITY_TO_GAME(info_tf_teamset);
-LINK_ENTITY_TO_GAME(info_tfdetect);
-LINK_ENTITY_TO_GAME(info_tfgoal);
-LINK_ENTITY_TO_GAME(info_tfgoal_timer);
-LINK_ENTITY_TO_GAME(info_throw_in);
-LINK_ENTITY_TO_GAME(info_transistor);
-LINK_ENTITY_TO_GAME(info_transport_node);
-LINK_ENTITY_TO_GAME(info_tt_gameplay);
-LINK_ENTITY_TO_GAME(info_upko_start);
-LINK_ENTITY_TO_GAME(info_usa_start);
-LINK_ENTITY_TO_GAME(info_vgui_start);
-LINK_ENTITY_TO_GAME(info_vip_start);
-LINK_ENTITY_TO_GAME(info_wanteddetect);
-LINK_ENTITY_TO_GAME(info_waypoint);
-LINK_ENTITY_TO_GAME(info_ww_teamcheck);
-LINK_ENTITY_TO_GAME(info_ww_teamset);
-LINK_ENTITY_TO_GAME(info_wwdetect);
-LINK_ENTITY_TO_GAME(info_wwgoal);
-LINK_ENTITY_TO_GAME(info_wwgoal_timer);
-LINK_ENTITY_TO_GAME(info_zone);
-LINK_ENTITY_TO_GAME(info_zone_caisse);
-LINK_ENTITY_TO_GAME(infodecal);
-LINK_ENTITY_TO_GAME(inout_register);
-LINK_ENTITY_TO_GAME(item_NVG);
-LINK_ENTITY_TO_GAME(item_PowerShield);
-LINK_ENTITY_TO_GAME(item_acme);
-LINK_ENTITY_TO_GAME(item_airtank);
-LINK_ENTITY_TO_GAME(item_ammo);
-LINK_ENTITY_TO_GAME(item_ammoicon);
-LINK_ENTITY_TO_GAME(item_ammopack);
-LINK_ENTITY_TO_GAME(item_antidote);
-LINK_ENTITY_TO_GAME(item_antidotee);
-LINK_ENTITY_TO_GAME(item_antigrav);
-LINK_ENTITY_TO_GAME(item_armor);
-LINK_ENTITY_TO_GAME(item_armor1);
-LINK_ENTITY_TO_GAME(item_armor2);
-LINK_ENTITY_TO_GAME(item_armor3);
-LINK_ENTITY_TO_GAME(item_armorInv);
-LINK_ENTITY_TO_GAME(item_armour);
-LINK_ENTITY_TO_GAME(item_artifact_envirosuit);
-LINK_ENTITY_TO_GAME(item_artifact_invisibility);
-LINK_ENTITY_TO_GAME(item_artifact_invulnerability);
-LINK_ENTITY_TO_GAME(item_artifact_super_damage);
-LINK_ENTITY_TO_GAME(item_assaultsuit);
-LINK_ENTITY_TO_GAME(item_atde_object);
-LINK_ENTITY_TO_GAME(item_autodoc);
-LINK_ENTITY_TO_GAME(item_backpack);
-LINK_ENTITY_TO_GAME(item_badge);
-LINK_ENTITY_TO_GAME(item_bag1);
-LINK_ENTITY_TO_GAME(item_bag2);
-LINK_ENTITY_TO_GAME(item_banana);
-LINK_ENTITY_TO_GAME(item_bandage);
-LINK_ENTITY_TO_GAME(item_bandolier);
-LINK_ENTITY_TO_GAME(item_baril);
-LINK_ENTITY_TO_GAME(item_baril_bleu);
-LINK_ENTITY_TO_GAME(item_baril_rouge);
-LINK_ENTITY_TO_GAME(item_battery);
-LINK_ENTITY_TO_GAME(item_beans);
-LINK_ENTITY_TO_GAME(item_body);
-LINK_ENTITY_TO_GAME(item_bonustime);
-LINK_ENTITY_TO_GAME(item_bonustime2);
-LINK_ENTITY_TO_GAME(item_bonustime3);
-LINK_ENTITY_TO_GAME(item_book_team1);
-LINK_ENTITY_TO_GAME(item_book_team2);
-LINK_ENTITY_TO_GAME(item_bottle);
-LINK_ENTITY_TO_GAME(item_briefcase);
-LINK_ENTITY_TO_GAME(item_c4);
-LINK_ENTITY_TO_GAME(item_cactus);
-LINK_ENTITY_TO_GAME(item_caisse_arme);
-LINK_ENTITY_TO_GAME(item_caisse_mega);
-LINK_ENTITY_TO_GAME(item_caisse_outil);
-LINK_ENTITY_TO_GAME(item_caisse_vie);
-LINK_ENTITY_TO_GAME(item_canteen);
-LINK_ENTITY_TO_GAME(item_capkey);
-LINK_ENTITY_TO_GAME(item_cash);
-LINK_ENTITY_TO_GAME(item_catalyst);
-LINK_ENTITY_TO_GAME(item_cells);
-LINK_ENTITY_TO_GAME(item_chainmail);
-LINK_ENTITY_TO_GAME(item_chicken);
-LINK_ENTITY_TO_GAME(item_claymore);
-LINK_ENTITY_TO_GAME(item_cloak);
-LINK_ENTITY_TO_GAME(item_cloaker);
-LINK_ENTITY_TO_GAME(item_concussion);
-LINK_ENTITY_TO_GAME(item_corpse);
-LINK_ENTITY_TO_GAME(item_ctf_flag);
-LINK_ENTITY_TO_GAME(item_ctfaccelerator);
-LINK_ENTITY_TO_GAME(item_ctfbackpack);
-LINK_ENTITY_TO_GAME(item_ctfbase);
-LINK_ENTITY_TO_GAME(item_ctfflag);
-LINK_ENTITY_TO_GAME(item_ctflongjump);
-LINK_ENTITY_TO_GAME(item_ctfportablehev);
-LINK_ENTITY_TO_GAME(item_ctfregeneration);
-LINK_ENTITY_TO_GAME(item_dbldamage);
-LINK_ENTITY_TO_GAME(item_dish);
-LINK_ENTITY_TO_GAME(item_docbag);
-LINK_ENTITY_TO_GAME(item_document);
-LINK_ENTITY_TO_GAME(item_dragonball);
-LINK_ENTITY_TO_GAME(item_dyno);
-LINK_ENTITY_TO_GAME(item_dyno1);
-LINK_ENTITY_TO_GAME(item_elixer);
-LINK_ENTITY_TO_GAME(item_elixir);
-LINK_ENTITY_TO_GAME(item_energy);
-LINK_ENTITY_TO_GAME(item_flag);
-LINK_ENTITY_TO_GAME(item_flag1);
-LINK_ENTITY_TO_GAME(item_flag2);
-LINK_ENTITY_TO_GAME(item_flag_atde);
-LINK_ENTITY_TO_GAME(item_flag_blue);
-LINK_ENTITY_TO_GAME(item_flag_center);
-LINK_ENTITY_TO_GAME(item_flag_cf);
-LINK_ENTITY_TO_GAME(item_flag_ctf);
-LINK_ENTITY_TO_GAME(item_flag_red);
-LINK_ENTITY_TO_GAME(item_flag_slayer);
-LINK_ENTITY_TO_GAME(item_flag_team1);
-LINK_ENTITY_TO_GAME(item_flag_team2);
-LINK_ENTITY_TO_GAME(item_flag_vampire);
-LINK_ENTITY_TO_GAME(item_flashbang);
-LINK_ENTITY_TO_GAME(item_flashlight);
-LINK_ENTITY_TO_GAME(item_food);
-LINK_ENTITY_TO_GAME(item_frag);
-LINK_ENTITY_TO_GAME(item_fruit);
-LINK_ENTITY_TO_GAME(item_gascan);
-LINK_ENTITY_TO_GAME(item_generic);
-LINK_ENTITY_TO_GAME(item_genericammo);
-LINK_ENTITY_TO_GAME(item_glass);
-LINK_ENTITY_TO_GAME(item_grappin);
-LINK_ENTITY_TO_GAME(item_head);
-LINK_ENTITY_TO_GAME(item_health);
-LINK_ENTITY_TO_GAME(item_healthkit);
-LINK_ENTITY_TO_GAME(item_heavyarmor);
-LINK_ENTITY_TO_GAME(item_herbs);
-LINK_ENTITY_TO_GAME(item_highjump);
-LINK_ENTITY_TO_GAME(item_holster);
-LINK_ENTITY_TO_GAME(item_infjetpack);
-LINK_ENTITY_TO_GAME(item_invincibility);
-LINK_ENTITY_TO_GAME(item_invisibility);
-LINK_ENTITY_TO_GAME(item_irnvg);
-LINK_ENTITY_TO_GAME(item_jetpack);
-LINK_ENTITY_TO_GAME(item_kevlar);
-LINK_ENTITY_TO_GAME(item_knife);
-LINK_ENTITY_TO_GAME(item_laser);
-LINK_ENTITY_TO_GAME(item_leather);
-LINK_ENTITY_TO_GAME(item_lgboiler);
-LINK_ENTITY_TO_GAME(item_longjump);
-LINK_ENTITY_TO_GAME(item_mask);
-LINK_ENTITY_TO_GAME(item_medboiler);
-LINK_ENTITY_TO_GAME(item_megavirus);
-LINK_ENTITY_TO_GAME(item_metal);
-LINK_ENTITY_TO_GAME(item_mine);
-LINK_ENTITY_TO_GAME(item_money);
-LINK_ENTITY_TO_GAME(item_moneycase);
-LINK_ENTITY_TO_GAME(item_newspaper);
-LINK_ENTITY_TO_GAME(item_nightvision);
-LINK_ENTITY_TO_GAME(item_nuclearbomb);
-LINK_ENTITY_TO_GAME(item_nuclearbombbutton);
-LINK_ENTITY_TO_GAME(item_nuclearbombtimer);
-LINK_ENTITY_TO_GAME(item_nvg);
-LINK_ENTITY_TO_GAME(item_objective);
-LINK_ENTITY_TO_GAME(item_papers);
-LINK_ENTITY_TO_GAME(item_parachute);
-LINK_ENTITY_TO_GAME(item_pickaxe);
-LINK_ENTITY_TO_GAME(item_platemail);
-LINK_ENTITY_TO_GAME(item_portableHEV);
-LINK_ENTITY_TO_GAME(item_portableHealthkit);
-LINK_ENTITY_TO_GAME(item_powerarmor);
-LINK_ENTITY_TO_GAME(item_powerup);
-LINK_ENTITY_TO_GAME(item_pt);
-LINK_ENTITY_TO_GAME(item_quad);
-LINK_ENTITY_TO_GAME(item_radio);
-LINK_ENTITY_TO_GAME(item_random);
-LINK_ENTITY_TO_GAME(item_regeneration);
-LINK_ENTITY_TO_GAME(item_resource);
-LINK_ENTITY_TO_GAME(item_rockets);
-LINK_ENTITY_TO_GAME(item_scope);
-LINK_ENTITY_TO_GAME(item_security);
-LINK_ENTITY_TO_GAME(item_sensubeanbag);
-LINK_ENTITY_TO_GAME(item_shells);
-LINK_ENTITY_TO_GAME(item_shovel);
-LINK_ENTITY_TO_GAME(item_silencer);
-LINK_ENTITY_TO_GAME(item_silvercase);
-LINK_ENTITY_TO_GAME(item_smboiler);
-LINK_ENTITY_TO_GAME(item_sodacan);
-LINK_ENTITY_TO_GAME(item_speedburst);
-LINK_ENTITY_TO_GAME(item_spikes);
-LINK_ENTITY_TO_GAME(item_stealth);
-LINK_ENTITY_TO_GAME(item_steerribs);
-LINK_ENTITY_TO_GAME(item_steerskull);
-LINK_ENTITY_TO_GAME(item_stg24);
-LINK_ENTITY_TO_GAME(item_suit);
-LINK_ENTITY_TO_GAME(item_swarm_flag);
-LINK_ENTITY_TO_GAME(item_tag);
-LINK_ENTITY_TO_GAME(item_telegram);
-LINK_ENTITY_TO_GAME(item_telegraphkey);
-LINK_ENTITY_TO_GAME(item_teleport);
-LINK_ENTITY_TO_GAME(item_tfgoal);
-LINK_ENTITY_TO_GAME(item_thighpack);
-LINK_ENTITY_TO_GAME(item_tombe_bleu);
-LINK_ENTITY_TO_GAME(item_tombe_rouge);
-LINK_ENTITY_TO_GAME(item_treasurechest);
-LINK_ENTITY_TO_GAME(item_upgradevest);
-LINK_ENTITY_TO_GAME(item_vengeance);
-LINK_ENTITY_TO_GAME(item_vest);
-LINK_ENTITY_TO_GAME(item_wagonwheel);
-LINK_ENTITY_TO_GAME(item_weapon);
-LINK_ENTITY_TO_GAME(item_wheelside);
-LINK_ENTITY_TO_GAME(item_wwgoal);
-LINK_ENTITY_TO_GAME(jail_execute);
-LINK_ENTITY_TO_GAME(jail_team_master);
-LINK_ENTITY_TO_GAME(jailer);
-LINK_ENTITY_TO_GAME(javelin);
-LINK_ENTITY_TO_GAME(judge);
-LINK_ENTITY_TO_GAME(jumppad_sign);
-LINK_ENTITY_TO_GAME(kamehameha);
-LINK_ENTITY_TO_GAME(kb_fireworklauncher);
-LINK_ENTITY_TO_GAME(killerrat);
-LINK_ENTITY_TO_GAME(knife);
-LINK_ENTITY_TO_GAME(knife_bolt);
-LINK_ENTITY_TO_GAME(knife_throw);
-LINK_ENTITY_TO_GAME(kotm_crown);
-LINK_ENTITY_TO_GAME(kotm_hill);
-LINK_ENTITY_TO_GAME(kwSpikeProjectile);
-LINK_ENTITY_TO_GAME(lance_proj);
-LINK_ENTITY_TO_GAME(laser_aimer);
-LINK_ENTITY_TO_GAME(laser_dot);
-LINK_ENTITY_TO_GAME(laser_spot);
-LINK_ENTITY_TO_GAME(laserbolt);
-LINK_ENTITY_TO_GAME(law_rocket);
-LINK_ENTITY_TO_GAME(lc_init_ent);
-LINK_ENTITY_TO_GAME(lc_respawner);
-LINK_ENTITY_TO_GAME(lc_spawner);
-LINK_ENTITY_TO_GAME(lcs_spawner);
-LINK_ENTITY_TO_GAME(lflamme_fire);
-LINK_ENTITY_TO_GAME(lgtng_ball);
-LINK_ENTITY_TO_GAME(lifesoul);
-LINK_ENTITY_TO_GAME(light);
-LINK_ENTITY_TO_GAME(light_environment);
-LINK_ENTITY_TO_GAME(light_glow);
-LINK_ENTITY_TO_GAME(light_spot);
-LINK_ENTITY_TO_GAME(lightfader);
-LINK_ENTITY_TO_GAME(load_wpt);
-LINK_ENTITY_TO_GAME(locus_alias);
-LINK_ENTITY_TO_GAME(locus_beam);
-LINK_ENTITY_TO_GAME(locus_variable);
-LINK_ENTITY_TO_GAME(m203grenade);
-LINK_ENTITY_TO_GAME(m61_grenade);
-LINK_ENTITY_TO_GAME(m72_rocket);
-LINK_ENTITY_TO_GAME(magicattack);
-LINK_ENTITY_TO_GAME(maintainer_ent);
-LINK_ENTITY_TO_GAME(mapClassName);
-LINK_ENTITY_TO_GAME(mapobject_asiancar);
-LINK_ENTITY_TO_GAME(mapobject_bluecar);
-LINK_ENTITY_TO_GAME(mapobject_copcar);
-LINK_ENTITY_TO_GAME(mapobject_jaguar);
-LINK_ENTITY_TO_GAME(mapobject_npc_bum);
-LINK_ENTITY_TO_GAME(mapobject_npc_bum1);
-LINK_ENTITY_TO_GAME(mapobject_npc_bum2);
-LINK_ENTITY_TO_GAME(mapobject_npc_bum3);
-LINK_ENTITY_TO_GAME(mapobject_npc_crow);
-LINK_ENTITY_TO_GAME(mapobject_npc_slavebot);
-LINK_ENTITY_TO_GAME(mapobject_redcar);
-LINK_ENTITY_TO_GAME(mapobject_zeppelin);
-LINK_ENTITY_TO_GAME(marker);
-LINK_ENTITY_TO_GAME(marker_flag);
-LINK_ENTITY_TO_GAME(master_key);
-LINK_ENTITY_TO_GAME(master_living);
-LINK_ENTITY_TO_GAME(master_object_home);
-LINK_ENTITY_TO_GAME(master_period);
-LINK_ENTITY_TO_GAME(master_player);
-LINK_ENTITY_TO_GAME(master_relay);
-LINK_ENTITY_TO_GAME(master_round_active);
-LINK_ENTITY_TO_GAME(master_round_start);
-LINK_ENTITY_TO_GAME(master_secret);
-LINK_ENTITY_TO_GAME(master_state);
-LINK_ENTITY_TO_GAME(master_team);
-LINK_ENTITY_TO_GAME(master_tech);
-LINK_ENTITY_TO_GAME(mastertoggle);
-LINK_ENTITY_TO_GAME(mazo);
-LINK_ENTITY_TO_GAME(mazoold);
-LINK_ENTITY_TO_GAME(medal);
-LINK_ENTITY_TO_GAME(medevac);
-LINK_ENTITY_TO_GAME(medivac);
-LINK_ENTITY_TO_GAME(meteor_god);
-LINK_ENTITY_TO_GAME(meteor_target);
-LINK_ENTITY_TO_GAME(mi_capture_zone);
-LINK_ENTITY_TO_GAME(mi_fail_objective);
-LINK_ENTITY_TO_GAME(mi_func_fog);
-LINK_ENTITY_TO_GAME(mi_grass);
-LINK_ENTITY_TO_GAME(mi_model);
-LINK_ENTITY_TO_GAME(mi_model_names);
-LINK_ENTITY_TO_GAME(mi_model_static);
-LINK_ENTITY_TO_GAME(mi_obj_icon);
-LINK_ENTITY_TO_GAME(mi_obj_switch);
-LINK_ENTITY_TO_GAME(mi_objective_attack);
-LINK_ENTITY_TO_GAME(mi_objective_bomb);
-LINK_ENTITY_TO_GAME(mi_objective_defend);
-LINK_ENTITY_TO_GAME(mi_objective_destruct);
-LINK_ENTITY_TO_GAME(mi_objective_extraction);
-LINK_ENTITY_TO_GAME(mi_objective_hosrescue);
-LINK_ENTITY_TO_GAME(mi_objective_hostage);
-LINK_ENTITY_TO_GAME(mi_objective_observation);
-LINK_ENTITY_TO_GAME(mi_objective_other);
-LINK_ENTITY_TO_GAME(mi_objective_repair);
-LINK_ENTITY_TO_GAME(mi_objective_team1);
-LINK_ENTITY_TO_GAME(mi_objective_team2);
-LINK_ENTITY_TO_GAME(mi_respawn);
-LINK_ENTITY_TO_GAME(mi_set_objective);
-LINK_ENTITY_TO_GAME(mi_set_respawn);
-LINK_ENTITY_TO_GAME(mi_set_timer);
-LINK_ENTITY_TO_GAME(mi_spawn_zone);
-LINK_ENTITY_TO_GAME(mi_team_damage);
-LINK_ENTITY_TO_GAME(mi_team_names);
-LINK_ENTITY_TO_GAME(mi_team_push);
-LINK_ENTITY_TO_GAME(mi_team_skins);
-LINK_ENTITY_TO_GAME(mi_timer);
-LINK_ENTITY_TO_GAME(mi_trigger_weather);
-LINK_ENTITY_TO_GAME(mi_weather);
-LINK_ENTITY_TO_GAME(mini_grunt);
-LINK_ENTITY_TO_GAME(mini_rocket);
-LINK_ENTITY_TO_GAME(mission_modifier);
-LINK_ENTITY_TO_GAME(misterx);
-LINK_ENTITY_TO_GAME(mode_relay);
-LINK_ENTITY_TO_GAME(model_entity);
-LINK_ENTITY_TO_GAME(molotov);
-LINK_ENTITY_TO_GAME(momentary_door);
-LINK_ENTITY_TO_GAME(momentary_jail_door);
-LINK_ENTITY_TO_GAME(momentary_rot_button);
-LINK_ENTITY_TO_GAME(monster_ShockTrooper_dead);
-LINK_ENTITY_TO_GAME(monster_a10);
-LINK_ENTITY_TO_GAME(monster_adrian);
-LINK_ENTITY_TO_GAME(monster_adrian_dead);
-LINK_ENTITY_TO_GAME(monster_alarm);
-LINK_ENTITY_TO_GAME(monster_alien_babyvoltigore);
-LINK_ENTITY_TO_GAME(monster_alien_controller);
-LINK_ENTITY_TO_GAME(monster_alien_grunt);
-LINK_ENTITY_TO_GAME(monster_alien_panther);
-LINK_ENTITY_TO_GAME(monster_alien_slave);
-LINK_ENTITY_TO_GAME(monster_alien_slave_dead);
-LINK_ENTITY_TO_GAME(monster_alien_voltigore);
-LINK_ENTITY_TO_GAME(monster_allied_barney);
-LINK_ENTITY_TO_GAME(monster_allied_grunt);
-LINK_ENTITY_TO_GAME(monster_alliedgrunt_dead);
-LINK_ENTITY_TO_GAME(monster_annie);
-LINK_ENTITY_TO_GAME(monster_annie_dead);
-LINK_ENTITY_TO_GAME(monster_apache);
-LINK_ENTITY_TO_GAME(monster_archer);
-LINK_ENTITY_TO_GAME(monster_assassin_repel);
-LINK_ENTITY_TO_GAME(monster_assassin_target);
-LINK_ENTITY_TO_GAME(monster_axis_grunt);
-LINK_ENTITY_TO_GAME(monster_axisgrunt_dead);
-LINK_ENTITY_TO_GAME(monster_babycrab);
-LINK_ENTITY_TO_GAME(monster_babygarg);
-LINK_ENTITY_TO_GAME(monster_balllightning);
-LINK_ENTITY_TO_GAME(monster_barnacle);
-LINK_ENTITY_TO_GAME(monster_barney);
-LINK_ENTITY_TO_GAME(monster_barney_dead);
-LINK_ENTITY_TO_GAME(monster_barniel);
-LINK_ENTITY_TO_GAME(monster_barniel_dead);
-LINK_ENTITY_TO_GAME(monster_bbturret);
-LINK_ENTITY_TO_GAME(monster_beak);
-LINK_ENTITY_TO_GAME(monster_bear);
-LINK_ENTITY_TO_GAME(monster_beartrap);
-LINK_ENTITY_TO_GAME(monster_bigminer);
-LINK_ENTITY_TO_GAME(monster_bigminer_dead);
-LINK_ENTITY_TO_GAME(monster_bigmomma);
-LINK_ENTITY_TO_GAME(monster_blkop_apache);
-LINK_ENTITY_TO_GAME(monster_blkop_ospray);
-LINK_ENTITY_TO_GAME(monster_blkop_osprey);
-LINK_ENTITY_TO_GAME(monster_bloater);
-LINK_ENTITY_TO_GAME(monster_bodypart);
-LINK_ENTITY_TO_GAME(monster_bomb);
-LINK_ENTITY_TO_GAME(monster_buffalo);
-LINK_ENTITY_TO_GAME(monster_bullchicken);
-LINK_ENTITY_TO_GAME(monster_bullsquid);
-LINK_ENTITY_TO_GAME(monster_burnmine);
-LINK_ENTITY_TO_GAME(monster_c4);
-LINK_ENTITY_TO_GAME(monster_camera);
-LINK_ENTITY_TO_GAME(monster_cat);
-LINK_ENTITY_TO_GAME(monster_chicken);
-LINK_ENTITY_TO_GAME(monster_chumtoad);
-LINK_ENTITY_TO_GAME(monster_cine2_crispen);
-LINK_ENTITY_TO_GAME(monster_cine2_dave);
-LINK_ENTITY_TO_GAME(monster_cine2_hvyweapons);
-LINK_ENTITY_TO_GAME(monster_cine2_masala);
-LINK_ENTITY_TO_GAME(monster_cine2_nagatow);
-LINK_ENTITY_TO_GAME(monster_cine2_scientist);
-LINK_ENTITY_TO_GAME(monster_cine2_slave);
-LINK_ENTITY_TO_GAME(monster_cine2_tiedcolonel);
-LINK_ENTITY_TO_GAME(monster_cine2_townmex);
-LINK_ENTITY_TO_GAME(monster_cine2_wtowna);
-LINK_ENTITY_TO_GAME(monster_cine2_wtownb);
-LINK_ENTITY_TO_GAME(monster_cine3_annie);
-LINK_ENTITY_TO_GAME(monster_cine3_barney);
-LINK_ENTITY_TO_GAME(monster_cine3_crispen);
-LINK_ENTITY_TO_GAME(monster_cine3_dave);
-LINK_ENTITY_TO_GAME(monster_cine3_hoss);
-LINK_ENTITY_TO_GAME(monster_cine3_masala);
-LINK_ENTITY_TO_GAME(monster_cine3_nagatow);
-LINK_ENTITY_TO_GAME(monster_cine3_scientist);
-LINK_ENTITY_TO_GAME(monster_cine3_tiedcolonel);
-LINK_ENTITY_TO_GAME(monster_cine3_townmex);
-LINK_ENTITY_TO_GAME(monster_cine3_wtowna);
-LINK_ENTITY_TO_GAME(monster_cine3_wtownb);
-LINK_ENTITY_TO_GAME(monster_cine_annie);
-LINK_ENTITY_TO_GAME(monster_cine_barney);
-LINK_ENTITY_TO_GAME(monster_cine_crispen);
-LINK_ENTITY_TO_GAME(monster_cine_dave);
-LINK_ENTITY_TO_GAME(monster_cine_hoss);
-LINK_ENTITY_TO_GAME(monster_cine_masala);
-LINK_ENTITY_TO_GAME(monster_cine_nagatow);
-LINK_ENTITY_TO_GAME(monster_cine_panther);
-LINK_ENTITY_TO_GAME(monster_cine_scientist);
-LINK_ENTITY_TO_GAME(monster_cine_tiedcolonel);
-LINK_ENTITY_TO_GAME(monster_cine_townmex);
-LINK_ENTITY_TO_GAME(monster_cine_wtowna);
-LINK_ENTITY_TO_GAME(monster_cine_wtownb);
-LINK_ENTITY_TO_GAME(monster_civilian);
-LINK_ENTITY_TO_GAME(monster_civilian_dead);
-LINK_ENTITY_TO_GAME(monster_cleansuit_scientist);
-LINK_ENTITY_TO_GAME(monster_cleansuit_scientist_dead);
-LINK_ENTITY_TO_GAME(monster_cockroach);
-LINK_ENTITY_TO_GAME(monster_colonel);
-LINK_ENTITY_TO_GAME(monster_colonel_dead);
-LINK_ENTITY_TO_GAME(monster_cow);
-LINK_ENTITY_TO_GAME(monster_cowboy);
-LINK_ENTITY_TO_GAME(monster_cowboy_dead);
-LINK_ENTITY_TO_GAME(monster_cricket);
-LINK_ENTITY_TO_GAME(monster_crispen);
-LINK_ENTITY_TO_GAME(monster_crispen_dead);
-LINK_ENTITY_TO_GAME(monster_critter);
-LINK_ENTITY_TO_GAME(monster_darttrap);
-LINK_ENTITY_TO_GAME(monster_dave);
-LINK_ENTITY_TO_GAME(monster_dave_dead);
-LINK_ENTITY_TO_GAME(monster_demo);
-LINK_ENTITY_TO_GAME(monster_dog);
-LINK_ENTITY_TO_GAME(monster_dragon);
-LINK_ENTITY_TO_GAME(monster_dragonfly);
-LINK_ENTITY_TO_GAME(monster_drillsergeant);
-LINK_ENTITY_TO_GAME(monster_eagle);
-LINK_ENTITY_TO_GAME(monster_eagle_flock);
-LINK_ENTITY_TO_GAME(monster_endboss);
-LINK_ENTITY_TO_GAME(monster_exp_alien_slave);
-LINK_ENTITY_TO_GAME(monster_fakemedkit);
-LINK_ENTITY_TO_GAME(monster_fgrunt_repel);
-LINK_ENTITY_TO_GAME(monster_flag1);
-LINK_ENTITY_TO_GAME(monster_flag2);
-LINK_ENTITY_TO_GAME(monster_flag3);
-LINK_ENTITY_TO_GAME(monster_flag4);
-LINK_ENTITY_TO_GAME(monster_flashlight);
-LINK_ENTITY_TO_GAME(monster_flyer);
-LINK_ENTITY_TO_GAME(monster_flyer_flock);
-LINK_ENTITY_TO_GAME(monster_furniture);
-LINK_ENTITY_TO_GAME(monster_garbage);
-LINK_ENTITY_TO_GAME(monster_gargantua);
-LINK_ENTITY_TO_GAME(monster_gator);
-LINK_ENTITY_TO_GAME(monster_generic);
-LINK_ENTITY_TO_GAME(monster_generic_dead);
-LINK_ENTITY_TO_GAME(monster_geneworm);
-LINK_ENTITY_TO_GAME(monster_giantplant);
-LINK_ENTITY_TO_GAME(monster_gman);
-LINK_ENTITY_TO_GAME(monster_goat);
-LINK_ENTITY_TO_GAME(monster_goblin);
-LINK_ENTITY_TO_GAME(monster_gonome);
-LINK_ENTITY_TO_GAME(monster_gonome_dead);
-LINK_ENTITY_TO_GAME(monster_gordon);
-LINK_ENTITY_TO_GAME(monster_gordon_dead);
-LINK_ENTITY_TO_GAME(monster_gps);
-LINK_ENTITY_TO_GAME(monster_grunt_ally_medic_dead);
-LINK_ENTITY_TO_GAME(monster_grunt_ally_repel);
-LINK_ENTITY_TO_GAME(monster_grunt_ally_torch_dead);
-LINK_ENTITY_TO_GAME(monster_grunt_repel);
-LINK_ENTITY_TO_GAME(monster_gunner_friendly);
-LINK_ENTITY_TO_GAME(monster_hatchetfish);
-LINK_ENTITY_TO_GAME(monster_headcrab);
-LINK_ENTITY_TO_GAME(monster_helicopter);
-LINK_ENTITY_TO_GAME(monster_hevbarn);
-LINK_ENTITY_TO_GAME(monster_hevbarn_dead);
-LINK_ENTITY_TO_GAME(monster_hevsuit_dead);
-LINK_ENTITY_TO_GAME(monster_hfgrunt_dead);
-LINK_ENTITY_TO_GAME(monster_hgrunt);
-LINK_ENTITY_TO_GAME(monster_hgrunt_dead);
-LINK_ENTITY_TO_GAME(monster_hgrunt_shotgun);
-LINK_ENTITY_TO_GAME(monster_hiveback);
-LINK_ENTITY_TO_GAME(monster_horse);
-LINK_ENTITY_TO_GAME(monster_hoss);
-LINK_ENTITY_TO_GAME(monster_hoss_dead);
-LINK_ENTITY_TO_GAME(monster_hostage);
-LINK_ENTITY_TO_GAME(monster_hostage_dead);
-LINK_ENTITY_TO_GAME(monster_houndeye);
-LINK_ENTITY_TO_GAME(monster_houndeye_dead);
-LINK_ENTITY_TO_GAME(monster_human_assassin);
-LINK_ENTITY_TO_GAME(monster_human_bandit);
-LINK_ENTITY_TO_GAME(monster_human_chopper);
-LINK_ENTITY_TO_GAME(monster_human_demoman);
-LINK_ENTITY_TO_GAME(monster_human_friendly_grunt);
-LINK_ENTITY_TO_GAME(monster_human_grunt);
-LINK_ENTITY_TO_GAME(monster_human_grunt_ally);
-LINK_ENTITY_TO_GAME(monster_human_grunt_ally_dead);
-LINK_ENTITY_TO_GAME(monster_human_gunman);
-LINK_ENTITY_TO_GAME(monster_human_medic_ally);
-LINK_ENTITY_TO_GAME(monster_human_medic_ally_dead);
-LINK_ENTITY_TO_GAME(monster_human_scientist);
-LINK_ENTITY_TO_GAME(monster_human_spforce);
-LINK_ENTITY_TO_GAME(monster_human_terror);
-LINK_ENTITY_TO_GAME(monster_human_torch_ally);
-LINK_ENTITY_TO_GAME(monster_human_torch_ally_dead);
-LINK_ENTITY_TO_GAME(monster_human_unarmed);
-LINK_ENTITY_TO_GAME(monster_hwgrunt);
-LINK_ENTITY_TO_GAME(monster_hwgrunt_repel);
-LINK_ENTITY_TO_GAME(monster_ichthyosaur);
-LINK_ENTITY_TO_GAME(monster_implanted);
-LINK_ENTITY_TO_GAME(monster_kaiewi);
-LINK_ENTITY_TO_GAME(monster_kaiewi_dead);
-LINK_ENTITY_TO_GAME(monster_kate);
-LINK_ENTITY_TO_GAME(monster_kate_dead);
-LINK_ENTITY_TO_GAME(monster_kid);
-LINK_ENTITY_TO_GAME(monster_killerbabycrab);
-LINK_ENTITY_TO_GAME(monster_largescorpion);
-LINK_ENTITY_TO_GAME(monster_larve);
-LINK_ENTITY_TO_GAME(monster_leech);
-LINK_ENTITY_TO_GAME(monster_llama);
-LINK_ENTITY_TO_GAME(monster_lrocket);
-LINK_ENTITY_TO_GAME(monster_m2);
-LINK_ENTITY_TO_GAME(monster_male_assassin);
-LINK_ENTITY_TO_GAME(monster_manta);
-LINK_ENTITY_TO_GAME(monster_masala);
-LINK_ENTITY_TO_GAME(monster_masala_dead);
-LINK_ENTITY_TO_GAME(monster_massassin_dead);
-LINK_ENTITY_TO_GAME(monster_medic_ally_repel);
-LINK_ENTITY_TO_GAME(monster_mexbandit);
-LINK_ENTITY_TO_GAME(monster_mexbandit_dead);
-LINK_ENTITY_TO_GAME(monster_microraptor);
-LINK_ENTITY_TO_GAME(monster_mine);
-LINK_ENTITY_TO_GAME(monster_miniturret);
-LINK_ENTITY_TO_GAME(monster_missle);
-LINK_ENTITY_TO_GAME(monster_monkey);
-LINK_ENTITY_TO_GAME(monster_mortar);
-LINK_ENTITY_TO_GAME(monster_morter);
-LINK_ENTITY_TO_GAME(monster_mouton);
-LINK_ENTITY_TO_GAME(monster_myself);
-LINK_ENTITY_TO_GAME(monster_myself_dead);
-LINK_ENTITY_TO_GAME(monster_nagatow);
-LINK_ENTITY_TO_GAME(monster_nagatow_dead);
-LINK_ENTITY_TO_GAME(monster_nihilanth);
-LINK_ENTITY_TO_GAME(monster_op4loader);
-LINK_ENTITY_TO_GAME(monster_osprey);
-LINK_ENTITY_TO_GAME(monster_otis);
-LINK_ENTITY_TO_GAME(monster_otis_dead);
-LINK_ENTITY_TO_GAME(monster_ourano);
-LINK_ENTITY_TO_GAME(monster_parachute);
-LINK_ENTITY_TO_GAME(monster_parrot);
-LINK_ENTITY_TO_GAME(monster_penguin);
-LINK_ENTITY_TO_GAME(monster_penta);
-LINK_ENTITY_TO_GAME(monster_pig);
-LINK_ENTITY_TO_GAME(monster_pilot);
-LINK_ENTITY_TO_GAME(monster_pipebomb);
-LINK_ENTITY_TO_GAME(monster_pitdrone);
-LINK_ENTITY_TO_GAME(monster_pitworm);
-LINK_ENTITY_TO_GAME(monster_pitworm_up);
-LINK_ENTITY_TO_GAME(monster_player);
-LINK_ENTITY_TO_GAME(monster_poison);
-LINK_ENTITY_TO_GAME(monster_powderkeg);
-LINK_ENTITY_TO_GAME(monster_prisoner);
-LINK_ENTITY_TO_GAME(monster_prop_apache);
-LINK_ENTITY_TO_GAME(monster_proximity);
-LINK_ENTITY_TO_GAME(monster_puma);
-LINK_ENTITY_TO_GAME(monster_ramone);
-LINK_ENTITY_TO_GAME(monster_ramone_repel);
-LINK_ENTITY_TO_GAME(monster_raptor);
-LINK_ENTITY_TO_GAME(monster_rat);
-LINK_ENTITY_TO_GAME(monster_recruit);
-LINK_ENTITY_TO_GAME(monster_replic);
-LINK_ENTITY_TO_GAME(monster_replicateur);
-LINK_ENTITY_TO_GAME(monster_replicator);
-LINK_ENTITY_TO_GAME(monster_robogrunt);
-LINK_ENTITY_TO_GAME(monster_robogrunt_dead);
-LINK_ENTITY_TO_GAME(monster_robogrunt_repel);
-LINK_ENTITY_TO_GAME(monster_robogruntrepel);
-LINK_ENTITY_TO_GAME(monster_rustbattery);
-LINK_ENTITY_TO_GAME(monster_rustbit);
-LINK_ENTITY_TO_GAME(monster_rustbit_friendly);
-LINK_ENTITY_TO_GAME(monster_rustflier);
-LINK_ENTITY_TO_GAME(monster_rustgunr);
-LINK_ENTITY_TO_GAME(monster_sarge_allies);
-LINK_ENTITY_TO_GAME(monster_satchel);
-LINK_ENTITY_TO_GAME(monster_scientist);
-LINK_ENTITY_TO_GAME(monster_scientist_dead);
-LINK_ENTITY_TO_GAME(monster_scorpion);
-LINK_ENTITY_TO_GAME(monster_sentry);
-LINK_ENTITY_TO_GAME(monster_sentry_mini);
-LINK_ENTITY_TO_GAME(monster_sentryx);
-LINK_ENTITY_TO_GAME(monster_sheep);
-LINK_ENTITY_TO_GAME(monster_shockroach);
-LINK_ENTITY_TO_GAME(monster_shocktrooper);
-LINK_ENTITY_TO_GAME(monster_shocktrooper_repel);
-LINK_ENTITY_TO_GAME(monster_shotgun);
-LINK_ENTITY_TO_GAME(monster_sitting_civilian);
-LINK_ENTITY_TO_GAME(monster_sitting_cleansuit_scientist);
-LINK_ENTITY_TO_GAME(monster_sitting_colonel);
-LINK_ENTITY_TO_GAME(monster_sitting_crispen);
-LINK_ENTITY_TO_GAME(monster_sitting_dave);
-LINK_ENTITY_TO_GAME(monster_sitting_masala);
-LINK_ENTITY_TO_GAME(monster_sitting_nagatow);
-LINK_ENTITY_TO_GAME(monster_sitting_scientist);
-LINK_ENTITY_TO_GAME(monster_sitting_townmex);
-LINK_ENTITY_TO_GAME(monster_sitting_twnwesta);
-LINK_ENTITY_TO_GAME(monster_sitting_twnwestb);
-LINK_ENTITY_TO_GAME(monster_sitting_villager);
-LINK_ENTITY_TO_GAME(monster_skeleton);
-LINK_ENTITY_TO_GAME(monster_skeleton_dead);
-LINK_ENTITY_TO_GAME(monster_skelly);
-LINK_ENTITY_TO_GAME(monster_skellydance);
-LINK_ENTITY_TO_GAME(monster_skull);
-LINK_ENTITY_TO_GAME(monster_skunk);
-LINK_ENTITY_TO_GAME(monster_smallminer);
-LINK_ENTITY_TO_GAME(monster_smallminer_dead);
-LINK_ENTITY_TO_GAME(monster_snake);
-LINK_ENTITY_TO_GAME(monster_snark);
-LINK_ENTITY_TO_GAME(monster_spforce_dead);
-LINK_ENTITY_TO_GAME(monster_spforce_repel);
-LINK_ENTITY_TO_GAME(monster_sphere);
-LINK_ENTITY_TO_GAME(monster_spider);
-LINK_ENTITY_TO_GAME(monster_spiritdragon);
-LINK_ENTITY_TO_GAME(monster_spiritwiz);
-LINK_ENTITY_TO_GAME(monster_srocket);
-LINK_ENTITY_TO_GAME(monster_super_snark);
-LINK_ENTITY_TO_GAME(monster_tac);
-LINK_ENTITY_TO_GAME(monster_tank);
-LINK_ENTITY_TO_GAME(monster_target);
-LINK_ENTITY_TO_GAME(monster_targetrocket);
-LINK_ENTITY_TO_GAME(monster_tentacle);
-LINK_ENTITY_TO_GAME(monster_tentaclemaw);
-LINK_ENTITY_TO_GAME(monster_terror_dead);
-LINK_ENTITY_TO_GAME(monster_terror_repel);
-LINK_ENTITY_TO_GAME(monster_test);
-LINK_ENTITY_TO_GAME(monster_thornbush);
-LINK_ENTITY_TO_GAME(monster_tied_colonel);
-LINK_ENTITY_TO_GAME(monster_torch_ally_repel);
-LINK_ENTITY_TO_GAME(monster_tornado);
-LINK_ENTITY_TO_GAME(monster_townmex);
-LINK_ENTITY_TO_GAME(monster_townmex_dead);
-LINK_ENTITY_TO_GAME(monster_trainingbot);
-LINK_ENTITY_TO_GAME(monster_tripmine);
-LINK_ENTITY_TO_GAME(monster_troop);
-LINK_ENTITY_TO_GAME(monster_tube);
-LINK_ENTITY_TO_GAME(monster_tube_embryo);
-LINK_ENTITY_TO_GAME(monster_turret);
-LINK_ENTITY_TO_GAME(monster_turretbase);
-LINK_ENTITY_TO_GAME(monster_twnwesta);
-LINK_ENTITY_TO_GAME(monster_twnwesta_dead);
-LINK_ENTITY_TO_GAME(monster_twnwestb);
-LINK_ENTITY_TO_GAME(monster_twnwestb_dead);
-LINK_ENTITY_TO_GAME(monster_valve_turret);
-LINK_ENTITY_TO_GAME(monster_villager);
-LINK_ENTITY_TO_GAME(monster_villager_dead);
-LINK_ENTITY_TO_GAME(monster_vortigaunt);
-LINK_ENTITY_TO_GAME(monster_wizardclone);
-LINK_ENTITY_TO_GAME(monster_wombat);
-LINK_ENTITY_TO_GAME(monster_worker);
-LINK_ENTITY_TO_GAME(monster_worker_dead);
-LINK_ENTITY_TO_GAME(monster_wwmine);
-LINK_ENTITY_TO_GAME(monster_xenome);
-LINK_ENTITY_TO_GAME(monster_xenome_embryo);
-LINK_ENTITY_TO_GAME(monster_zbarney);
-LINK_ENTITY_TO_GAME(monster_zombie);
-LINK_ENTITY_TO_GAME(monster_zombie2);
-LINK_ENTITY_TO_GAME(monster_zombie_barney);
-LINK_ENTITY_TO_GAME(monster_zombie_soldier);
-LINK_ENTITY_TO_GAME(monster_zombie_soldier_dead);
-LINK_ENTITY_TO_GAME(monstermaker);
-LINK_ENTITY_TO_GAME(monsterpoint);
-LINK_ENTITY_TO_GAME(monsterpoint_backup);
-LINK_ENTITY_TO_GAME(mortar_shell);
-LINK_ENTITY_TO_GAME(mortarshell);
-LINK_ENTITY_TO_GAME(motion_manager);
-LINK_ENTITY_TO_GAME(motion_thread);
-LINK_ENTITY_TO_GAME(movementchamber);
-LINK_ENTITY_TO_GAME(moving_camera);
-LINK_ENTITY_TO_GAME(multi_alias);
-LINK_ENTITY_TO_GAME(multi_gate_1);
-LINK_ENTITY_TO_GAME(multi_gate_10);
-LINK_ENTITY_TO_GAME(multi_gate_11);
-LINK_ENTITY_TO_GAME(multi_gate_12);
-LINK_ENTITY_TO_GAME(multi_gate_13);
-LINK_ENTITY_TO_GAME(multi_gate_14);
-LINK_ENTITY_TO_GAME(multi_gate_15);
-LINK_ENTITY_TO_GAME(multi_gate_16);
-LINK_ENTITY_TO_GAME(multi_gate_17);
-LINK_ENTITY_TO_GAME(multi_gate_18);
-LINK_ENTITY_TO_GAME(multi_gate_19);
-LINK_ENTITY_TO_GAME(multi_gate_2);
-LINK_ENTITY_TO_GAME(multi_gate_20);
-LINK_ENTITY_TO_GAME(multi_gate_21);
-LINK_ENTITY_TO_GAME(multi_gate_22);
-LINK_ENTITY_TO_GAME(multi_gate_23);
-LINK_ENTITY_TO_GAME(multi_gate_24);
-LINK_ENTITY_TO_GAME(multi_gate_25);
-LINK_ENTITY_TO_GAME(multi_gate_26);
-LINK_ENTITY_TO_GAME(multi_gate_27);
-LINK_ENTITY_TO_GAME(multi_gate_28);
-LINK_ENTITY_TO_GAME(multi_gate_29);
-LINK_ENTITY_TO_GAME(multi_gate_3);
-LINK_ENTITY_TO_GAME(multi_gate_30);
-LINK_ENTITY_TO_GAME(multi_gate_31);
-LINK_ENTITY_TO_GAME(multi_gate_32);
-LINK_ENTITY_TO_GAME(multi_gate_33);
-LINK_ENTITY_TO_GAME(multi_gate_34);
-LINK_ENTITY_TO_GAME(multi_gate_35);
-LINK_ENTITY_TO_GAME(multi_gate_36);
-LINK_ENTITY_TO_GAME(multi_gate_37);
-LINK_ENTITY_TO_GAME(multi_gate_38);
-LINK_ENTITY_TO_GAME(multi_gate_39);
-LINK_ENTITY_TO_GAME(multi_gate_4);
-LINK_ENTITY_TO_GAME(multi_gate_40);
-LINK_ENTITY_TO_GAME(multi_gate_41);
-LINK_ENTITY_TO_GAME(multi_gate_42);
-LINK_ENTITY_TO_GAME(multi_gate_43);
-LINK_ENTITY_TO_GAME(multi_gate_44);
-LINK_ENTITY_TO_GAME(multi_gate_45);
-LINK_ENTITY_TO_GAME(multi_gate_46);
-LINK_ENTITY_TO_GAME(multi_gate_47);
-LINK_ENTITY_TO_GAME(multi_gate_48);
-LINK_ENTITY_TO_GAME(multi_gate_49);
-LINK_ENTITY_TO_GAME(multi_gate_5);
-LINK_ENTITY_TO_GAME(multi_gate_6);
-LINK_ENTITY_TO_GAME(multi_gate_7);
-LINK_ENTITY_TO_GAME(multi_gate_8);
-LINK_ENTITY_TO_GAME(multi_gate_9);
-LINK_ENTITY_TO_GAME(multi_manager);
-LINK_ENTITY_TO_GAME(multi_watcher);
-LINK_ENTITY_TO_GAME(multisource);
-LINK_ENTITY_TO_GAME(my_monster);
-LINK_ENTITY_TO_GAME(nail);
-LINK_ENTITY_TO_GAME(neutrinobeam);
-LINK_ENTITY_TO_GAME(nggrenade);
-LINK_ENTITY_TO_GAME(nihilanth_energy_ball);
-LINK_ENTITY_TO_GAME(node_viewer);
-LINK_ENTITY_TO_GAME(node_viewer_fly);
-LINK_ENTITY_TO_GAME(node_viewer_human);
-LINK_ENTITY_TO_GAME(node_viewer_large);
-LINK_ENTITY_TO_GAME(npc);
-LINK_ENTITY_TO_GAME(npc_skrunk);
-LINK_ENTITY_TO_GAME(nuclear_missile);
-LINK_ENTITY_TO_GAME(nuke);
-LINK_ENTITY_TO_GAME(nuke_rocket);
-LINK_ENTITY_TO_GAME(object);
-LINK_ENTITY_TO_GAME(object_beacon);
-LINK_ENTITY_TO_GAME(object_follow);
-LINK_ENTITY_TO_GAME(object_maker);
-LINK_ENTITY_TO_GAME(object_superchip);
-LINK_ENTITY_TO_GAME(offensechamber);
-LINK_ENTITY_TO_GAME(ol_bell);
-LINK_ENTITY_TO_GAME(ol_bluecapture);
-LINK_ENTITY_TO_GAME(ol_blueflag);
-LINK_ENTITY_TO_GAME(ol_bottle);
-LINK_ENTITY_TO_GAME(ol_ctf_blueteam);
-LINK_ENTITY_TO_GAME(ol_ctf_redteam);
-LINK_ENTITY_TO_GAME(ol_furniture);
-LINK_ENTITY_TO_GAME(ol_lantern);
-LINK_ENTITY_TO_GAME(ol_redcapture);
-LINK_ENTITY_TO_GAME(ol_redflag);
-LINK_ENTITY_TO_GAME(ol_spitoon);
-LINK_ENTITY_TO_GAME(old_rocket);
-LINK_ENTITY_TO_GAME(oldbot);
-LINK_ENTITY_TO_GAME(op4mortar);
-LINK_ENTITY_TO_GAME(oz_logo);
-LINK_ENTITY_TO_GAME(oz_rune);
-LINK_ENTITY_TO_GAME(paintball);
-LINK_ENTITY_TO_GAME(palm_tree);
-LINK_ENTITY_TO_GAME(para_roundtimer);
-LINK_ENTITY_TO_GAME(particle);
-LINK_ENTITY_TO_GAME(particle_shooter);
-LINK_ENTITY_TO_GAME(particle_weatherfx);
-LINK_ENTITY_TO_GAME(path_corner);
-LINK_ENTITY_TO_GAME(path_monster);
-LINK_ENTITY_TO_GAME(path_track);
-LINK_ENTITY_TO_GAME(pballblue);
-LINK_ENTITY_TO_GAME(pballred);
-LINK_ENTITY_TO_GAME(pe_escapezone);
-LINK_ENTITY_TO_GAME(pe_light);
-LINK_ENTITY_TO_GAME(pe_light_ref);
-LINK_ENTITY_TO_GAME(pe_object_case);
-LINK_ENTITY_TO_GAME(pe_object_htool);
-LINK_ENTITY_TO_GAME(pe_objectclip);
-LINK_ENTITY_TO_GAME(pe_radar_mark);
-LINK_ENTITY_TO_GAME(pe_rain);
-LINK_ENTITY_TO_GAME(pe_spawn_corps);
-LINK_ENTITY_TO_GAME(pe_spawn_syndicate);
-LINK_ENTITY_TO_GAME(pe_terminal);
-LINK_ENTITY_TO_GAME(phase_pulse);
-LINK_ENTITY_TO_GAME(phasegate);
-LINK_ENTITY_TO_GAME(pickup_drive_agrunt);
-LINK_ENTITY_TO_GAME(pickup_drive_apache);
-LINK_ENTITY_TO_GAME(pickup_drive_assassin);
-LINK_ENTITY_TO_GAME(pickup_drive_bm);
-LINK_ENTITY_TO_GAME(pickup_drive_bullsquid);
-LINK_ENTITY_TO_GAME(pickup_drive_controller);
-LINK_ENTITY_TO_GAME(pickup_drive_garg);
-LINK_ENTITY_TO_GAME(pickup_drive_houndeye);
-LINK_ENTITY_TO_GAME(pickup_drive_icky);
-LINK_ENTITY_TO_GAME(pickup_drive_panth);
-LINK_ENTITY_TO_GAME(pickup_drive_slave);
-LINK_ENTITY_TO_GAME(pickup_drive_turret);
-LINK_ENTITY_TO_GAME(pineapple);
-LINK_ENTITY_TO_GAME(pipe_bomb);
-LINK_ENTITY_TO_GAME(pipebomb);
-LINK_ENTITY_TO_GAME(pitdronespike);
-LINK_ENTITY_TO_GAME(pitworm_gib);
-LINK_ENTITY_TO_GAME(pitworm_gibshooter);
-LINK_ENTITY_TO_GAME(plasma);
-LINK_ENTITY_TO_GAME(plasma2);
-LINK_ENTITY_TO_GAME(plasma_ball);
-LINK_ENTITY_TO_GAME(player);
-LINK_ENTITY_TO_GAME(player_beartrapstrip);
-LINK_ENTITY_TO_GAME(player_corpse);
-LINK_ENTITY_TO_GAME(player_flame);
-LINK_ENTITY_TO_GAME(player_freeze);
-LINK_ENTITY_TO_GAME(player_giveitems);
-LINK_ENTITY_TO_GAME(player_glasses);
-LINK_ENTITY_TO_GAME(player_helmet);
-LINK_ENTITY_TO_GAME(player_loadsaved);
-LINK_ENTITY_TO_GAME(player_respawn_zone);
-LINK_ENTITY_TO_GAME(player_roach);
-LINK_ENTITY_TO_GAME(player_speaker);
-LINK_ENTITY_TO_GAME(player_togglehud);
-LINK_ENTITY_TO_GAME(player_weaponship);
-LINK_ENTITY_TO_GAME(player_weaponstrip);
-LINK_ENTITY_TO_GAME(playerhornet);
-LINK_ENTITY_TO_GAME(point_win);
-LINK_ENTITY_TO_GAME(poison_injected);
-LINK_ENTITY_TO_GAME(potatoc);
-LINK_ENTITY_TO_GAME(power_bag);
-LINK_ENTITY_TO_GAME(power_ballbag);
-LINK_ENTITY_TO_GAME(power_coco);
-LINK_ENTITY_TO_GAME(power_gloves);
-LINK_ENTITY_TO_GAME(power_pogo);
-LINK_ENTITY_TO_GAME(power_shield);
-LINK_ENTITY_TO_GAME(power_shoes);
-LINK_ENTITY_TO_GAME(powerstruggle);
-LINK_ENTITY_TO_GAME(powerup_candy);
-LINK_ENTITY_TO_GAME(proj_bird);
-LINK_ENTITY_TO_GAME(proj_blaster);
-LINK_ENTITY_TO_GAME(proj_bursatchel);
-LINK_ENTITY_TO_GAME(proj_cocklebur);
-LINK_ENTITY_TO_GAME(proj_comet);
-LINK_ENTITY_TO_GAME(proj_doublemagicmissle);
-LINK_ENTITY_TO_GAME(proj_dragonfire);
-LINK_ENTITY_TO_GAME(proj_earthquakesatchel);
-LINK_ENTITY_TO_GAME(proj_fireball);
-LINK_ENTITY_TO_GAME(proj_firesatchel);
-LINK_ENTITY_TO_GAME(proj_firespiral);
-LINK_ENTITY_TO_GAME(proj_fissure);
-LINK_ENTITY_TO_GAME(proj_flame);
-LINK_ENTITY_TO_GAME(proj_flyingskull);
-LINK_ENTITY_TO_GAME(proj_healhurtsatchel);
-LINK_ENTITY_TO_GAME(proj_icepoke);
-LINK_ENTITY_TO_GAME(proj_iceshard);
-LINK_ENTITY_TO_GAME(proj_lightningcloud);
-LINK_ENTITY_TO_GAME(proj_lightningsatchel);
-LINK_ENTITY_TO_GAME(proj_magicmissle);
-LINK_ENTITY_TO_GAME(proj_meteor);
-LINK_ENTITY_TO_GAME(proj_mindmissle);
-LINK_ENTITY_TO_GAME(proj_missile);
-LINK_ENTITY_TO_GAME(proj_poisonsatchel);
-LINK_ENTITY_TO_GAME(proj_rollingstone);
-LINK_ENTITY_TO_GAME(proj_sporepod);
-LINK_ENTITY_TO_GAME(proj_stone);
-LINK_ENTITY_TO_GAME(proj_suctionsatchel);
-LINK_ENTITY_TO_GAME(proj_tcrystal);
-LINK_ENTITY_TO_GAME(proj_throwingbone);
-LINK_ENTITY_TO_GAME(proj_toothsatchel);
-LINK_ENTITY_TO_GAME(proj_whirlwind);
-LINK_ENTITY_TO_GAME(proj_wyvern);
-LINK_ENTITY_TO_GAME(promagcurse);
-LINK_ENTITY_TO_GAME(pshield_det);
-LINK_ENTITY_TO_GAME(pt_bomb_zone);
-LINK_ENTITY_TO_GAME(pt_campaign_end);
-LINK_ENTITY_TO_GAME(pt_change_attribute);
-LINK_ENTITY_TO_GAME(pt_control_area);
-LINK_ENTITY_TO_GAME(pt_defeat_victory);
-LINK_ENTITY_TO_GAME(pt_entity_reset);
-LINK_ENTITY_TO_GAME(pt_hostage);
-LINK_ENTITY_TO_GAME(pt_mission_target);
-LINK_ENTITY_TO_GAME(pt_model);
-LINK_ENTITY_TO_GAME(pt_parachute_area);
-LINK_ENTITY_TO_GAME(pt_rescue_zone);
-LINK_ENTITY_TO_GAME(pt_round_info);
-LINK_ENTITY_TO_GAME(pt_score_award);
-LINK_ENTITY_TO_GAME(pt_startpoint);
-LINK_ENTITY_TO_GAME(pt_timer);
-LINK_ENTITY_TO_GAME(pt_toggle_respawnmode);
-LINK_ENTITY_TO_GAME(pt_trigger_bomb);
-LINK_ENTITY_TO_GAME(pt_trigger_loader);
-LINK_ENTITY_TO_GAME(pt_trigger_zone);
-LINK_ENTITY_TO_GAME(pulse);
-LINK_ENTITY_TO_GAME(pulsefrag);
-LINK_ENTITY_TO_GAME(punch_tripmine);
-LINK_ENTITY_TO_GAME(push_point1);
-LINK_ENTITY_TO_GAME(push_point2);
-LINK_ENTITY_TO_GAME(push_point3);
-LINK_ENTITY_TO_GAME(push_point4);
-LINK_ENTITY_TO_GAME(push_point5);
-LINK_ENTITY_TO_GAME(quake_nail);
-LINK_ENTITY_TO_GAME(quake_rocket);
-LINK_ENTITY_TO_GAME(race_controller);
-LINK_ENTITY_TO_GAME(race_path);
-LINK_ENTITY_TO_GAME(rage);
-LINK_ENTITY_TO_GAME(rain_modify);
-LINK_ENTITY_TO_GAME(rain_settings);
-LINK_ENTITY_TO_GAME(random_ammo);
-LINK_ENTITY_TO_GAME(random_speaker);
-LINK_ENTITY_TO_GAME(random_trigger);
-LINK_ENTITY_TO_GAME(random_weapon);
-LINK_ENTITY_TO_GAME(redflag_follow);
-LINK_ENTITY_TO_GAME(reetou_proj);
-LINK_ENTITY_TO_GAME(remove_all_wpts);
-LINK_ENTITY_TO_GAME(remove_wpt);
-LINK_ENTITY_TO_GAME(resourcetower);
-LINK_ENTITY_TO_GAME(respawn_chest);
-LINK_ENTITY_TO_GAME(return_axe);
-LINK_ENTITY_TO_GAME(reversecurse);
-LINK_ENTITY_TO_GAME(rm_rocket);
-LINK_ENTITY_TO_GAME(roach_charge);
-LINK_ENTITY_TO_GAME(rocket_air_strike);
-LINK_ENTITY_TO_GAME(rocket_croix);
-LINK_ENTITY_TO_GAME(rocket_mine);
-LINK_ENTITY_TO_GAME(rocket_napalm);
-LINK_ENTITY_TO_GAME(rocket_phoenix);
-LINK_ENTITY_TO_GAME(rocket_pigeon);
-LINK_ENTITY_TO_GAME(rocket_snipe);
-LINK_ENTITY_TO_GAME(rocketpistol_rocket);
-LINK_ENTITY_TO_GAME(rope_sample);
-LINK_ENTITY_TO_GAME(rope_segment);
-LINK_ENTITY_TO_GAME(rpg7_rocket);
-LINK_ENTITY_TO_GAME(rpg_rocket);
-LINK_ENTITY_TO_GAME(rr_shell);
-LINK_ENTITY_TO_GAME(rrp);
-LINK_ENTITY_TO_GAME(rs_effect);
-LINK_ENTITY_TO_GAME(rs_fog);
-LINK_ENTITY_TO_GAME(rs_grenade);
-LINK_ENTITY_TO_GAME(rs_if);
-LINK_ENTITY_TO_GAME(rs_message);
-LINK_ENTITY_TO_GAME(rs_particle_emitter);
-LINK_ENTITY_TO_GAME(rs_roundend);
-LINK_ENTITY_TO_GAME(rs_teamslot);
-LINK_ENTITY_TO_GAME(rs_timer);
-LINK_ENTITY_TO_GAME(rs_val);
-LINK_ENTITY_TO_GAME(rs_victorypoints);
-LINK_ENTITY_TO_GAME(sams_shower);
-LINK_ENTITY_TO_GAME(sanity);
-LINK_ENTITY_TO_GAME(satelite_laser);
-LINK_ENTITY_TO_GAME(save_wpt);
-LINK_ENTITY_TO_GAME(scan);
-LINK_ENTITY_TO_GAME(scatterattack);
-LINK_ENTITY_TO_GAME(scattersplit);
-LINK_ENTITY_TO_GAME(sci_spawner);
-LINK_ENTITY_TO_GAME(scientist_mine);
-LINK_ENTITY_TO_GAME(scientistbomb);
-LINK_ENTITY_TO_GAME(score_multiplier);
-LINK_ENTITY_TO_GAME(scoreboard);
-LINK_ENTITY_TO_GAME(scripted);
-LINK_ENTITY_TO_GAME(scripted_action);
-LINK_ENTITY_TO_GAME(scripted_sentence);
-LINK_ENTITY_TO_GAME(scripted_sequence);
-LINK_ENTITY_TO_GAME(scripted_tanksequence);
-LINK_ENTITY_TO_GAME(scripted_trainsequence);
-LINK_ENTITY_TO_GAME(sdcurse);
-LINK_ENTITY_TO_GAME(secondary_point);
-LINK_ENTITY_TO_GAME(securitymanager);
-LINK_ENTITY_TO_GAME(sell_ak101);
-LINK_ENTITY_TO_GAME(sell_ak47);
-LINK_ENTITY_TO_GAME(sell_baretta);
-LINK_ENTITY_TO_GAME(sell_beretta);
-LINK_ENTITY_TO_GAME(sell_dblshot);
-LINK_ENTITY_TO_GAME(sell_dbshot);
-LINK_ENTITY_TO_GAME(sell_glock17);
-LINK_ENTITY_TO_GAME(sell_longslide);
-LINK_ENTITY_TO_GAME(sell_mac);
-LINK_ENTITY_TO_GAME(sell_mac10);
-LINK_ENTITY_TO_GAME(sell_molotov_cocktail);
-LINK_ENTITY_TO_GAME(sell_mossberg);
-LINK_ENTITY_TO_GAME(sell_psg1);
-LINK_ENTITY_TO_GAME(sell_steyr_m40);
-LINK_ENTITY_TO_GAME(sell_tec9);
-LINK_ENTITY_TO_GAME(sell_tommy);
-LINK_ENTITY_TO_GAME(sell_tommygun);
-LINK_ENTITY_TO_GAME(sell_uzi);
-LINK_ENTITY_TO_GAME(sensorychamber);
-LINK_ENTITY_TO_GAME(sgvortex);
-LINK_ENTITY_TO_GAME(shell_bazooka);
-LINK_ENTITY_TO_GAME(shell_piat);
-LINK_ENTITY_TO_GAME(shell_pschreck);
-LINK_ENTITY_TO_GAME(shenlong);
-LINK_ENTITY_TO_GAME(shipAI_shipmate);
-LINK_ENTITY_TO_GAME(shock);
-LINK_ENTITY_TO_GAME(shockH);
-LINK_ENTITY_TO_GAME(shock_beam);
-LINK_ENTITY_TO_GAME(shockcore);
-LINK_ENTITY_TO_GAME(shotgun_crate);
-LINK_ENTITY_TO_GAME(shotgun_forklift);
-LINK_ENTITY_TO_GAME(shotgun_hev);
-LINK_ENTITY_TO_GAME(shotgun_sci);
-LINK_ENTITY_TO_GAME(show_wpt);
-LINK_ENTITY_TO_GAME(shrapnel);
-LINK_ENTITY_TO_GAME(shrink_timer);
-LINK_ENTITY_TO_GAME(shrinker_project);
-LINK_ENTITY_TO_GAME(siegeturret);
-LINK_ENTITY_TO_GAME(skull);
-LINK_ENTITY_TO_GAME(skunk_fart);
-LINK_ENTITY_TO_GAME(slAGruntTakeCoverFromEnemy);
-LINK_ENTITY_TO_GAME(slAGruntThreatDisplay);
-LINK_ENTITY_TO_GAME(slAssassinTakeCoverFromBestSound);
-LINK_ENTITY_TO_GAME(slAssassinTakeCoverFromEnemy);
-LINK_ENTITY_TO_GAME(slAssassinTakeCoverFromEnemy2);
-LINK_ENTITY_TO_GAME(slBaFaceTarget);
-LINK_ENTITY_TO_GAME(slControllerTakeCover);
-LINK_ENTITY_TO_GAME(slFaceTarget);
-LINK_ENTITY_TO_GAME(slFaceTargetScared);
-LINK_ENTITY_TO_GAME(slGruntTakeCover);
-LINK_ENTITY_TO_GAME(slGruntTakeCoverFromBestSound);
-LINK_ENTITY_TO_GAME(slGruntTossGrenadeCover);
-LINK_ENTITY_TO_GAME(slIdleTrigger);
-LINK_ENTITY_TO_GAME(slRunToScript);
-LINK_ENTITY_TO_GAME(slTakeCoverFromBestSound);
-LINK_ENTITY_TO_GAME(slTakeCoverFromEnemy);
-LINK_ENTITY_TO_GAME(slTakeCoverFromOrigin);
-LINK_ENTITY_TO_GAME(slTlkIdleEyecontact);
-LINK_ENTITY_TO_GAME(slTlkIdleWatchClient);
-LINK_ENTITY_TO_GAME(slTwitchDie);
-LINK_ENTITY_TO_GAME(slWalkToScript);
-LINK_ENTITY_TO_GAME(slowcurse);
-LINK_ENTITY_TO_GAME(slowrefirecurse);
-LINK_ENTITY_TO_GAME(sm_project);
-LINK_ENTITY_TO_GAME(sm_rocket_01);
-LINK_ENTITY_TO_GAME(smoking_grenade);
-LINK_ENTITY_TO_GAME(snark_cam);
-LINK_ENTITY_TO_GAME(snark_project);
-LINK_ENTITY_TO_GAME(snowball);
-LINK_ENTITY_TO_GAME(soundent);
-LINK_ENTITY_TO_GAME(spark_shower);
-LINK_ENTITY_TO_GAME(spawn_base_team1);
-LINK_ENTITY_TO_GAME(spawn_base_team2);
-LINK_ENTITY_TO_GAME(spawn_observer);
-LINK_ENTITY_TO_GAME(spawn_player_custom);
-LINK_ENTITY_TO_GAME(spawn_player_team1);
-LINK_ENTITY_TO_GAME(spawn_player_team2);
-LINK_ENTITY_TO_GAME(spawnfar);
-LINK_ENTITY_TO_GAME(speaker);
-LINK_ENTITY_TO_GAME(spear_bolt);
-LINK_ENTITY_TO_GAME(specailbc);
-LINK_ENTITY_TO_GAME(special_teleport_in);
-LINK_ENTITY_TO_GAME(sphere_explosion);
-LINK_ENTITY_TO_GAME(sphere_mine);
-LINK_ENTITY_TO_GAME(spirit_bomb);
-LINK_ENTITY_TO_GAME(spitgunprojectile);
-LINK_ENTITY_TO_GAME(spore);
-LINK_ENTITY_TO_GAME(sporegrenade);
-LINK_ENTITY_TO_GAME(sporegunprojectile);
-LINK_ENTITY_TO_GAME(spy_camera);
-LINK_ENTITY_TO_GAME(spy_escape);
-LINK_ENTITY_TO_GAME(squadmaker);
-LINK_ENTITY_TO_GAME(squidspit);
-LINK_ENTITY_TO_GAME(sstrike);
-LINK_ENTITY_TO_GAME(st_rocket);
-LINK_ENTITY_TO_GAME(streak_spiral);
-LINK_ENTITY_TO_GAME(struct_goa);
-LINK_ENTITY_TO_GAME(struct_goa_actual);
-LINK_ENTITY_TO_GAME(struct_goa_actual_sub);
-LINK_ENTITY_TO_GAME(struct_tau);
-LINK_ENTITY_TO_GAME(struct_tau_actual);
-LINK_ENTITY_TO_GAME(struct_tau_actual_sub);
-LINK_ENTITY_TO_GAME(sturmbody);
-LINK_ENTITY_TO_GAME(suck_grenade);
-LINK_ENTITY_TO_GAME(suck_mine);
-LINK_ENTITY_TO_GAME(sunofgod);
-LINK_ENTITY_TO_GAME(swarm_garg_stomp);
-LINK_ENTITY_TO_GAME(swarm_spawnpt_acontroller);
-LINK_ENTITY_TO_GAME(swarm_spawnpt_agarg);
-LINK_ENTITY_TO_GAME(swarm_spawnpt_aheadcrab);
-LINK_ENTITY_TO_GAME(swarm_spawnpt_aslave);
-LINK_ENTITY_TO_GAME(swarm_spawnpt_atripod);
-LINK_ENTITY_TO_GAME(swarm_spawnpt_hassassin);
-LINK_ENTITY_TO_GAME(swarm_spawnpt_hcommander);
-LINK_ENTITY_TO_GAME(swarm_spawnpt_hengineer);
-LINK_ENTITY_TO_GAME(swarm_spawnpt_hgrunt);
-LINK_ENTITY_TO_GAME(swarm_spawnpt_hscientist);
-LINK_ENTITY_TO_GAME(swarm_spawnpt_human);
-LINK_ENTITY_TO_GAME(swarm_team_alien);
-LINK_ENTITY_TO_GAME(swarm_team_human);
-LINK_ENTITY_TO_GAME(tag_camp);
-LINK_ENTITY_TO_GAME(tag_crouch_jump);
-LINK_ENTITY_TO_GAME(tag_door);
-LINK_ENTITY_TO_GAME(tag_duck);
-LINK_ENTITY_TO_GAME(tag_jump);
-LINK_ENTITY_TO_GAME(tag_run);
-LINK_ENTITY_TO_GAME(tag_snipe);
-LINK_ENTITY_TO_GAME(tag_walk);
-LINK_ENTITY_TO_GAME(tango_nomad);
-LINK_ENTITY_TO_GAME(tango_sentinel);
-LINK_ENTITY_TO_GAME(tango_sniper);
-LINK_ENTITY_TO_GAME(targ_speaker);
-LINK_ENTITY_TO_GAME(target_all_players);
-LINK_ENTITY_TO_GAME(target_animation);
-LINK_ENTITY_TO_GAME(target_cdaudio);
-LINK_ENTITY_TO_GAME(target_changemaster);
-LINK_ENTITY_TO_GAME(target_changetarget);
-LINK_ENTITY_TO_GAME(target_give);
-LINK_ENTITY_TO_GAME(target_gravity);
-LINK_ENTITY_TO_GAME(target_help);
-LINK_ENTITY_TO_GAME(target_hurt);
-LINK_ENTITY_TO_GAME(target_kill);
-LINK_ENTITY_TO_GAME(target_mp3audio);
-LINK_ENTITY_TO_GAME(target_print);
-LINK_ENTITY_TO_GAME(target_push);
-LINK_ENTITY_TO_GAME(target_random);
-LINK_ENTITY_TO_GAME(target_random_player);
-LINK_ENTITY_TO_GAME(target_relay);
-LINK_ENTITY_TO_GAME(target_removeobject);
-LINK_ENTITY_TO_GAME(target_reset);
-LINK_ENTITY_TO_GAME(target_respawn);
-LINK_ENTITY_TO_GAME(target_score);
-LINK_ENTITY_TO_GAME(target_server_command);
-LINK_ENTITY_TO_GAME(target_set_cvar);
-LINK_ENTITY_TO_GAME(target_spawnitem);
-LINK_ENTITY_TO_GAME(target_spectate);
-LINK_ENTITY_TO_GAME(target_team);
-LINK_ENTITY_TO_GAME(target_team_score);
-LINK_ENTITY_TO_GAME(target_teamdie);
-LINK_ENTITY_TO_GAME(target_teleport);
-LINK_ENTITY_TO_GAME(target_tripmine);
-LINK_ENTITY_TO_GAME(target_weaponstrip);
-LINK_ENTITY_TO_GAME(target_win);
-LINK_ENTITY_TO_GAME(tcontroller_cball);
-LINK_ENTITY_TO_GAME(tcontroller_tball);
-LINK_ENTITY_TO_GAME(team_advarmory);
-LINK_ENTITY_TO_GAME(team_advturretfactory);
-LINK_ENTITY_TO_GAME(team_armory);
-LINK_ENTITY_TO_GAME(team_armslab);
-LINK_ENTITY_TO_GAME(team_chemlab);
-LINK_ENTITY_TO_GAME(team_command);
-LINK_ENTITY_TO_GAME(team_goal);
-LINK_ENTITY_TO_GAME(team_hive);
-LINK_ENTITY_TO_GAME(team_infportal);
-LINK_ENTITY_TO_GAME(team_medlab);
-LINK_ENTITY_TO_GAME(team_nukeplant);
-LINK_ENTITY_TO_GAME(team_observatory);
-LINK_ENTITY_TO_GAME(team_prototypelab);
-LINK_ENTITY_TO_GAME(team_turretfactory);
-LINK_ENTITY_TO_GAME(team_webstrand);
-LINK_ENTITY_TO_GAME(telebecon);
-LINK_ENTITY_TO_GAME(teledeath);
-LINK_ENTITY_TO_GAME(teleenter);
-LINK_ENTITY_TO_GAME(temp_eject);
-LINK_ENTITY_TO_GAME(teslagren);
-LINK_ENTITY_TO_GAME(test_effect);
-LINK_ENTITY_TO_GAME(testhull);
-LINK_ENTITY_TO_GAME(testparticles);
-LINK_ENTITY_TO_GAME(tf_ammo_rpgclip);
-LINK_ENTITY_TO_GAME(tf_flame);
-LINK_ENTITY_TO_GAME(tf_flamethrower_burst);
-LINK_ENTITY_TO_GAME(tf_gl_grenade);
-LINK_ENTITY_TO_GAME(tf_ic_rocket);
-LINK_ENTITY_TO_GAME(tf_nailgun_nail);
-LINK_ENTITY_TO_GAME(tf_rpg_rocket);
-LINK_ENTITY_TO_GAME(tf_weapon_ac);
-LINK_ENTITY_TO_GAME(tf_weapon_autorifle);
-LINK_ENTITY_TO_GAME(tf_weapon_axe);
-LINK_ENTITY_TO_GAME(tf_weapon_caltrop);
-LINK_ENTITY_TO_GAME(tf_weapon_caltropgrenade);
-LINK_ENTITY_TO_GAME(tf_weapon_concussiongrenade);
-LINK_ENTITY_TO_GAME(tf_weapon_empgrenade);
-LINK_ENTITY_TO_GAME(tf_weapon_flamethrower);
-LINK_ENTITY_TO_GAME(tf_weapon_gasgrenade);
-LINK_ENTITY_TO_GAME(tf_weapon_genericprimedgrenade);
-LINK_ENTITY_TO_GAME(tf_weapon_gl);
-LINK_ENTITY_TO_GAME(tf_weapon_ic);
-LINK_ENTITY_TO_GAME(tf_weapon_knife);
-LINK_ENTITY_TO_GAME(tf_weapon_medikit);
-LINK_ENTITY_TO_GAME(tf_weapon_mirvbomblet);
-LINK_ENTITY_TO_GAME(tf_weapon_mirvgrenade);
-LINK_ENTITY_TO_GAME(tf_weapon_nailgrenade);
-LINK_ENTITY_TO_GAME(tf_weapon_napalmgrenade);
-LINK_ENTITY_TO_GAME(tf_weapon_ng);
-LINK_ENTITY_TO_GAME(tf_weapon_normalgrenade);
-LINK_ENTITY_TO_GAME(tf_weapon_pl);
-LINK_ENTITY_TO_GAME(tf_weapon_railgun);
-LINK_ENTITY_TO_GAME(tf_weapon_rpg);
-LINK_ENTITY_TO_GAME(tf_weapon_shotgun);
-LINK_ENTITY_TO_GAME(tf_weapon_sniperrifle);
-LINK_ENTITY_TO_GAME(tf_weapon_spanner);
-LINK_ENTITY_TO_GAME(tf_weapon_superng);
-LINK_ENTITY_TO_GAME(tf_weapon_supershotgun);
-LINK_ENTITY_TO_GAME(tf_weapon_tranq);
-LINK_ENTITY_TO_GAME(tgrenade);
-LINK_ENTITY_TO_GAME(thornbush);
-LINK_ENTITY_TO_GAME(throwing_knife);
-LINK_ENTITY_TO_GAME(thrown_katana);
-LINK_ENTITY_TO_GAME(thrown_knife);
-LINK_ENTITY_TO_GAME(thrown_object);
-LINK_ENTITY_TO_GAME(thrown_sledge);
-LINK_ENTITY_TO_GAME(timed_grenade);
-LINK_ENTITY_TO_GAME(timedevent);
-LINK_ENTITY_TO_GAME(timer);
-LINK_ENTITY_TO_GAME(timer_add);
-LINK_ENTITY_TO_GAME(tlAGruntTakeCoverFromEnemy);
-LINK_ENTITY_TO_GAME(tlAGruntThreatDisplay);
-LINK_ENTITY_TO_GAME(tlAssassinTakeCoverFromBestSound);
-LINK_ENTITY_TO_GAME(tlAssassinTakeCoverFromEnemy);
-LINK_ENTITY_TO_GAME(tlAssassinTakeCoverFromEnemy2);
-LINK_ENTITY_TO_GAME(tlBaFaceTarget);
-LINK_ENTITY_TO_GAME(tlControllerTakeCover);
-LINK_ENTITY_TO_GAME(tlFaceTarget);
-LINK_ENTITY_TO_GAME(tlFaceTargetScared);
-LINK_ENTITY_TO_GAME(tlGruntTakeCover1);
-LINK_ENTITY_TO_GAME(tlGruntTakeCoverFromBestSound);
-LINK_ENTITY_TO_GAME(tlGruntTossGrenadeCover1);
-LINK_ENTITY_TO_GAME(tlTakeCoverFromBestSound);
-LINK_ENTITY_TO_GAME(tlTakeCoverFromEnemy);
-LINK_ENTITY_TO_GAME(tlTakeCoverFromOrigin);
-LINK_ENTITY_TO_GAME(tlTlkIdleEyecontact);
-LINK_ENTITY_TO_GAME(tlTlkIdleWatchClient);
-LINK_ENTITY_TO_GAME(tlTlkIdleWatchClientStare);
-LINK_ENTITY_TO_GAME(tlTwitchDie);
-LINK_ENTITY_TO_GAME(tod_control_area);
-LINK_ENTITY_TO_GAME(tod_control_point);
-LINK_ENTITY_TO_GAME(tod_notripmine_area);
-LINK_ENTITY_TO_GAME(tod_roundend_trigger);
-LINK_ENTITY_TO_GAME(tod_roundstart_trigger);
-LINK_ENTITY_TO_GAME(tod_roundwon_trigger);
-LINK_ENTITY_TO_GAME(tombstone);
-LINK_ENTITY_TO_GAME(translocator_disc);
-LINK_ENTITY_TO_GAME(transphasic_gib);
-LINK_ENTITY_TO_GAME(transport_apc);
-LINK_ENTITY_TO_GAME(transport_blackhawk);
-LINK_ENTITY_TO_GAME(treasure_chest);
-LINK_ENTITY_TO_GAME(trenches_allied_start);
-LINK_ENTITY_TO_GAME(trenches_axis_start);
-LINK_ENTITY_TO_GAME(trenches_central_start);
-LINK_ENTITY_TO_GAME(trigger);
-LINK_ENTITY_TO_GAME(trigger_GoalLine);
-LINK_ENTITY_TO_GAME(trigger_PenaltyBox);
-LINK_ENTITY_TO_GAME(trigger_SideLine);
-LINK_ENTITY_TO_GAME(trigger_adv_teleport);
-LINK_ENTITY_TO_GAME(trigger_armory);
-LINK_ENTITY_TO_GAME(trigger_assault);
-LINK_ENTITY_TO_GAME(trigger_auto);
-LINK_ENTITY_TO_GAME(trigger_autosave);
-LINK_ENTITY_TO_GAME(trigger_ball);
-LINK_ENTITY_TO_GAME(trigger_baril);
-LINK_ENTITY_TO_GAME(trigger_bounce);
-LINK_ENTITY_TO_GAME(trigger_camera);
-LINK_ENTITY_TO_GAME(trigger_capturetimer);
-LINK_ENTITY_TO_GAME(trigger_captureupdate);
-LINK_ENTITY_TO_GAME(trigger_cdaudio);
-LINK_ENTITY_TO_GAME(trigger_changealias);
-LINK_ENTITY_TO_GAME(trigger_changecvar);
-LINK_ENTITY_TO_GAME(trigger_changelevel);
-LINK_ENTITY_TO_GAME(trigger_changetarget);
-LINK_ENTITY_TO_GAME(trigger_changevalue);
-LINK_ENTITY_TO_GAME(trigger_coldbreath);
-LINK_ENTITY_TO_GAME(trigger_comet);
-LINK_ENTITY_TO_GAME(trigger_command);
-LINK_ENTITY_TO_GAME(trigger_control);
-LINK_ENTITY_TO_GAME(trigger_coop);
-LINK_ENTITY_TO_GAME(trigger_counter);
-LINK_ENTITY_TO_GAME(trigger_course);
-LINK_ENTITY_TO_GAME(trigger_crash);
-LINK_ENTITY_TO_GAME(trigger_ctf);
-LINK_ENTITY_TO_GAME(trigger_ctfgeneric);
-LINK_ENTITY_TO_GAME(trigger_deathmatch);
-LINK_ENTITY_TO_GAME(trigger_deliveryzone);
-LINK_ENTITY_TO_GAME(trigger_die);
-LINK_ENTITY_TO_GAME(trigger_discerturn);
-LINK_ENTITY_TO_GAME(trigger_discreturn);
-LINK_ENTITY_TO_GAME(trigger_endround);
-LINK_ENTITY_TO_GAME(trigger_endsection);
-LINK_ENTITY_TO_GAME(trigger_env_hurt);
-LINK_ENTITY_TO_GAME(trigger_execcommand);
-LINK_ENTITY_TO_GAME(trigger_fall);
-LINK_ENTITY_TO_GAME(trigger_flagcheck);
-LINK_ENTITY_TO_GAME(trigger_geneworm_hit);
-LINK_ENTITY_TO_GAME(trigger_goal);
-LINK_ENTITY_TO_GAME(trigger_golem);
-LINK_ENTITY_TO_GAME(trigger_gravity);
-LINK_ENTITY_TO_GAME(trigger_gunmanteleport);
-LINK_ENTITY_TO_GAME(trigger_hevcharge);
-LINK_ENTITY_TO_GAME(trigger_hold);
-LINK_ENTITY_TO_GAME(trigger_hurt);
-LINK_ENTITY_TO_GAME(trigger_hurt_bleu);
-LINK_ENTITY_TO_GAME(trigger_hurt_rouge);
-LINK_ENTITY_TO_GAME(trigger_inout);
-LINK_ENTITY_TO_GAME(trigger_jail);
-LINK_ENTITY_TO_GAME(trigger_jail_release);
-LINK_ENTITY_TO_GAME(trigger_jetpack);
-LINK_ENTITY_TO_GAME(trigger_jump);
-LINK_ENTITY_TO_GAME(trigger_jumppad);
-LINK_ENTITY_TO_GAME(trigger_katehealth);
-LINK_ENTITY_TO_GAME(trigger_kill_nogib);
-LINK_ENTITY_TO_GAME(trigger_killmonster);
-LINK_ENTITY_TO_GAME(trigger_lightstyle);
-LINK_ENTITY_TO_GAME(trigger_loadhazard);
-LINK_ENTITY_TO_GAME(trigger_mine);
-LINK_ENTITY_TO_GAME(trigger_monsterjump);
-LINK_ENTITY_TO_GAME(trigger_motion);
-LINK_ENTITY_TO_GAME(trigger_multiple);
-LINK_ENTITY_TO_GAME(trigger_music);
-LINK_ENTITY_TO_GAME(trigger_noclaymores);
-LINK_ENTITY_TO_GAME(trigger_npcarea);
-LINK_ENTITY_TO_GAME(trigger_objectcapture);
-LINK_ENTITY_TO_GAME(trigger_once);
-LINK_ENTITY_TO_GAME(trigger_once_round);
-LINK_ENTITY_TO_GAME(trigger_onsight);
-LINK_ENTITY_TO_GAME(trigger_particles);
-LINK_ENTITY_TO_GAME(trigger_playerfreeze);
-LINK_ENTITY_TO_GAME(trigger_point_controle);
-LINK_ENTITY_TO_GAME(trigger_presence);
-LINK_ENTITY_TO_GAME(trigger_push);
-LINK_ENTITY_TO_GAME(trigger_random);
-LINK_ENTITY_TO_GAME(trigger_random_group);
-LINK_ENTITY_TO_GAME(trigger_random_time);
-LINK_ENTITY_TO_GAME(trigger_random_unique);
-LINK_ENTITY_TO_GAME(trigger_regen);
-LINK_ENTITY_TO_GAME(trigger_reinforcements);
-LINK_ENTITY_TO_GAME(trigger_relay);
-LINK_ENTITY_TO_GAME(trigger_respawn);
-LINK_ENTITY_TO_GAME(trigger_rndbased);
-LINK_ENTITY_TO_GAME(trigger_rottest);
-LINK_ENTITY_TO_GAME(trigger_rs_hurt);
-LINK_ENTITY_TO_GAME(trigger_script);
-LINK_ENTITY_TO_GAME(trigger_secret);
-LINK_ENTITY_TO_GAME(trigger_section);
-LINK_ENTITY_TO_GAME(trigger_setflag);
-LINK_ENTITY_TO_GAME(trigger_setorigin);
-LINK_ENTITY_TO_GAME(trigger_shutup);
-LINK_ENTITY_TO_GAME(trigger_sound);
-LINK_ENTITY_TO_GAME(trigger_speed);
-LINK_ENTITY_TO_GAME(trigger_sponly);
-LINK_ENTITY_TO_GAME(trigger_startpatrol);
-LINK_ENTITY_TO_GAME(trigger_teampush);
-LINK_ENTITY_TO_GAME(trigger_teleport);
-LINK_ENTITY_TO_GAME(trigger_transition);
-LINK_ENTITY_TO_GAME(trigger_war);
-LINK_ENTITY_TO_GAME(trigger_xen_return);
-LINK_ENTITY_TO_GAME(trigger_zone);
-LINK_ENTITY_TO_GAME(trigger_zone_bleu);
-LINK_ENTITY_TO_GAME(trigger_zone_rouge);
-LINK_ENTITY_TO_GAME(trip_beam);
-LINK_ENTITY_TO_GAME(ts_bomb);
-LINK_ENTITY_TO_GAME(ts_dmhill);
-LINK_ENTITY_TO_GAME(ts_groundweapon);
-LINK_ENTITY_TO_GAME(ts_hack);
-LINK_ENTITY_TO_GAME(ts_mapglobals);
-LINK_ENTITY_TO_GAME(ts_model);
-LINK_ENTITY_TO_GAME(ts_objective_manager);
-LINK_ENTITY_TO_GAME(ts_objective_ptr);
-LINK_ENTITY_TO_GAME(ts_powerup);
-LINK_ENTITY_TO_GAME(ts_slowmotion);
-LINK_ENTITY_TO_GAME(ts_slowmotionpoint);
-LINK_ENTITY_TO_GAME(ts_teamescape);
-LINK_ENTITY_TO_GAME(ts_trigger);
-LINK_ENTITY_TO_GAME(ts_vipescape);
-LINK_ENTITY_TO_GAME(ts_wingiver);
-LINK_ENTITY_TO_GAME(turf_zone);
-LINK_ENTITY_TO_GAME(turret);
-LINK_ENTITY_TO_GAME(ultima_grenade);
-LINK_ENTITY_TO_GAME(umbracloud);
-LINK_ENTITY_TO_GAME(umbraprojectile);
-LINK_ENTITY_TO_GAME(uw_monster_hybrid);
-LINK_ENTITY_TO_GAME(uw_monster_michael);
-LINK_ENTITY_TO_GAME(uw_player_lycan);
-LINK_ENTITY_TO_GAME(uw_player_vamp);
-LINK_ENTITY_TO_GAME(uw_player_view);
-LINK_ENTITY_TO_GAME(vehicle);
-LINK_ENTITY_TO_GAME(vehicle_dreadnaught);
-LINK_ENTITY_TO_GAME(vehicle_dreadnaught_weapon);
-LINK_ENTITY_TO_GAME(vehicle_tank);
-LINK_ENTITY_TO_GAME(vehicle_thing);
-LINK_ENTITY_TO_GAME(vehicle_wraithlord);
-LINK_ENTITY_TO_GAME(vehicle_wraithlord_weapon);
-LINK_ENTITY_TO_GAME(victim_scientist);
-LINK_ENTITY_TO_GAME(vipescape);
-LINK_ENTITY_TO_GAME(virtual_hull);
-LINK_ENTITY_TO_GAME(voltigoreshock);
-LINK_ENTITY_TO_GAME(vote_llama);
-LINK_ENTITY_TO_GAME(vscrossbow_bolt);
-LINK_ENTITY_TO_GAME(watcher);
-LINK_ENTITY_TO_GAME(watcher_count);
-LINK_ENTITY_TO_GAME(weapmortar);
-LINK_ENTITY_TO_GAME(weapon_1100);
-LINK_ENTITY_TO_GAME(weapon_1445lda);
-LINK_ENTITY_TO_GAME(weapon_1911);
-LINK_ENTITY_TO_GAME(weapon_30cal);
-LINK_ENTITY_TO_GAME(weapon_30mmsg);
-LINK_ENTITY_TO_GAME(weapon_357);
-LINK_ENTITY_TO_GAME(weapon_40gl);
-LINK_ENTITY_TO_GAME(weapon_44sw);
-LINK_ENTITY_TO_GAME(weapon_50cal);
-LINK_ENTITY_TO_GAME(weapon_556AR);
-LINK_ENTITY_TO_GAME(weapon_90mm);
-LINK_ENTITY_TO_GAME(weapon_92d);
-LINK_ENTITY_TO_GAME(weapon_9mmAR);
-LINK_ENTITY_TO_GAME(weapon_9mmhandgun);
-LINK_ENTITY_TO_GAME(weapon_9mmm41a);
-LINK_ENTITY_TO_GAME(weapon_BritGrenMelee);
-LINK_ENTITY_TO_GAME(weapon_BritGrenNade);
-LINK_ENTITY_TO_GAME(weapon_BrownBess);
-LINK_ENTITY_TO_GAME(weapon_CEnfield);
-LINK_ENTITY_TO_GAME(weapon_CEnfieldMelee);
-LINK_ENTITY_TO_GAME(weapon_CEnfieldNade);
-LINK_ENTITY_TO_GAME(weapon_Charleville);
-LINK_ENTITY_TO_GAME(weapon_FT);
-LINK_ENTITY_TO_GAME(weapon_G11);
-LINK_ENTITY_TO_GAME(weapon_GMauserG98);
-LINK_ENTITY_TO_GAME(weapon_GMauserG98Melee);
-LINK_ENTITY_TO_GAME(weapon_GMauserG98Nade);
-LINK_ENTITY_TO_GAME(weapon_GermGrenMelee);
-LINK_ENTITY_TO_GAME(weapon_GermGrenNade);
-LINK_ENTITY_TO_GAME(weapon_Knife);
-LINK_ENTITY_TO_GAME(weapon_Pennsylvania);
-LINK_ENTITY_TO_GAME(weapon_PistolA);
-LINK_ENTITY_TO_GAME(weapon_PistolB);
-LINK_ENTITY_TO_GAME(weapon_Revolutionnaire);
-LINK_ENTITY_TO_GAME(weapon_SPchemicalgun);
-LINK_ENTITY_TO_GAME(weapon_Sabre);
-LINK_ENTITY_TO_GAME(weapon_a5);
-LINK_ENTITY_TO_GAME(weapon_aandagger);
-LINK_ENTITY_TO_GAME(weapon_acannon);
-LINK_ENTITY_TO_GAME(weapon_acidrocket);
-LINK_ENTITY_TO_GAME(weapon_acidrocketgun);
-LINK_ENTITY_TO_GAME(weapon_adrenaline);
-LINK_ENTITY_TO_GAME(weapon_aicore);
-LINK_ENTITY_TO_GAME(weapon_air_strike);
-LINK_ENTITY_TO_GAME(weapon_ak);
-LINK_ENTITY_TO_GAME(weapon_ak101);
-LINK_ENTITY_TO_GAME(weapon_ak47);
-LINK_ENTITY_TO_GAME(weapon_ak5);
-LINK_ENTITY_TO_GAME(weapon_ak5s);
-LINK_ENTITY_TO_GAME(weapon_ak74);
-LINK_ENTITY_TO_GAME(weapon_akimbo_glocks);
-LINK_ENTITY_TO_GAME(weapon_akimbob);
-LINK_ENTITY_TO_GAME(weapon_akimboberettas);
-LINK_ENTITY_TO_GAME(weapon_akimbocolts);
-LINK_ENTITY_TO_GAME(weapon_akimbodeagles);
-LINK_ENTITY_TO_GAME(weapon_akimbogun);
-LINK_ENTITY_TO_GAME(weapon_akimbosawedoffs);
-LINK_ENTITY_TO_GAME(weapon_akimcolt);
-LINK_ENTITY_TO_GAME(weapon_akimsaa);
-LINK_ENTITY_TO_GAME(weapon_aks74u);
-LINK_ENTITY_TO_GAME(weapon_alarm);
-LINK_ENTITY_TO_GAME(weapon_aliencannon);
-LINK_ENTITY_TO_GAME(weapon_amerknife);
-LINK_ENTITY_TO_GAME(weapon_ammo);
-LINK_ENTITY_TO_GAME(weapon_amp);
-LINK_ENTITY_TO_GAME(weapon_anaconda);
-LINK_ENTITY_TO_GAME(weapon_angel);
-LINK_ENTITY_TO_GAME(weapon_ar10);
-LINK_ENTITY_TO_GAME(weapon_ar33);
-LINK_ENTITY_TO_GAME(weapon_assaultminigun);
-LINK_ENTITY_TO_GAME(weapon_aug);
-LINK_ENTITY_TO_GAME(weapon_autococker);
-LINK_ENTITY_TO_GAME(weapon_autogl);
-LINK_ENTITY_TO_GAME(weapon_automag);
-LINK_ENTITY_TO_GAME(weapon_autoshotgun);
-LINK_ENTITY_TO_GAME(weapon_awm);
-LINK_ENTITY_TO_GAME(weapon_awp);
-LINK_ENTITY_TO_GAME(weapon_axe);
-LINK_ENTITY_TO_GAME(weapon_axes);
-LINK_ENTITY_TO_GAME(weapon_b93r);
-LINK_ENTITY_TO_GAME(weapon_babblergun);
-LINK_ENTITY_TO_GAME(weapon_babblerprojectile);
-LINK_ENTITY_TO_GAME(weapon_balllightningspell);
-LINK_ENTITY_TO_GAME(weapon_banana);
-LINK_ENTITY_TO_GAME(weapon_banane);
-LINK_ENTITY_TO_GAME(weapon_bandage);
-LINK_ENTITY_TO_GAME(weapon_bandsaw);
-LINK_ENTITY_TO_GAME(weapon_bang);
-LINK_ENTITY_TO_GAME(weapon_bar);
-LINK_ENTITY_TO_GAME(weapon_barett);
-LINK_ENTITY_TO_GAME(weapon_baretta);
-LINK_ENTITY_TO_GAME(weapon_barnacle);
-LINK_ENTITY_TO_GAME(weapon_barney9mmar);
-LINK_ENTITY_TO_GAME(weapon_barney9mmhg);
-LINK_ENTITY_TO_GAME(weapon_barneyhandgrenade);
-LINK_ENTITY_TO_GAME(weapon_barneyshotgun);
-LINK_ENTITY_TO_GAME(weapon_barrett82);
-LINK_ENTITY_TO_GAME(weapon_baseballbat);
-LINK_ENTITY_TO_GAME(weapon_bat);
-LINK_ENTITY_TO_GAME(weapon_baton);
-LINK_ENTITY_TO_GAME(weapon_batsup);
-LINK_ENTITY_TO_GAME(weapon_batte);
-LINK_ENTITY_TO_GAME(weapon_battleaxe);
-LINK_ENTITY_TO_GAME(weapon_bayonet);
-LINK_ENTITY_TO_GAME(weapon_bazooka);
-LINK_ENTITY_TO_GAME(weapon_beamgun);
-LINK_ENTITY_TO_GAME(weapon_beanstalkspell);
-LINK_ENTITY_TO_GAME(weapon_bearbite);
-LINK_ENTITY_TO_GAME(weapon_bearclaw);
-LINK_ENTITY_TO_GAME(weapon_beartrap);
-LINK_ENTITY_TO_GAME(weapon_benelli);
-LINK_ENTITY_TO_GAME(weapon_ber92f);
-LINK_ENTITY_TO_GAME(weapon_ber92fs);
-LINK_ENTITY_TO_GAME(weapon_ber93r);
-LINK_ENTITY_TO_GAME(weapon_beretta);
-LINK_ENTITY_TO_GAME(weapon_beretta_a);
-LINK_ENTITY_TO_GAME(weapon_bfg);
-LINK_ENTITY_TO_GAME(weapon_bigaxe);
-LINK_ENTITY_TO_GAME(weapon_bigbang);
-LINK_ENTITY_TO_GAME(weapon_biggun);
-LINK_ENTITY_TO_GAME(weapon_bilebomb);
-LINK_ENTITY_TO_GAME(weapon_bilebombgun);
-LINK_ENTITY_TO_GAME(weapon_binoculars);
-LINK_ENTITY_TO_GAME(weapon_binos);
-LINK_ENTITY_TO_GAME(weapon_birdspell);
-LINK_ENTITY_TO_GAME(weapon_bite2gun);
-LINK_ENTITY_TO_GAME(weapon_bitegun);
-LINK_ENTITY_TO_GAME(weapon_bizon);
-LINK_ENTITY_TO_GAME(weapon_blaster);
-LINK_ENTITY_TO_GAME(weapon_blazer);
-LINK_ENTITY_TO_GAME(weapon_blink);
-LINK_ENTITY_TO_GAME(weapon_blowpipe);
-LINK_ENTITY_TO_GAME(weapon_bodypart);
-LINK_ENTITY_TO_GAME(weapon_bola);
-LINK_ENTITY_TO_GAME(weapon_boltrifle);
-LINK_ENTITY_TO_GAME(weapon_bomb);
-LINK_ENTITY_TO_GAME(weapon_bomber);
-LINK_ENTITY_TO_GAME(weapon_bow);
-LINK_ENTITY_TO_GAME(weapon_bren);
-LINK_ENTITY_TO_GAME(weapon_brickcannon);
-LINK_ENTITY_TO_GAME(weapon_briefcase);
-LINK_ENTITY_TO_GAME(weapon_bsword);
-LINK_ENTITY_TO_GAME(weapon_buffalo);
-LINK_ENTITY_TO_GAME(weapon_burningattack);
-LINK_ENTITY_TO_GAME(weapon_bush);
-LINK_ENTITY_TO_GAME(weapon_bushmaster);
-LINK_ENTITY_TO_GAME(weapon_c4);
-LINK_ENTITY_TO_GAME(weapon_cal50);
-LINK_ENTITY_TO_GAME(weapon_camera);
-LINK_ENTITY_TO_GAME(weapon_candy);
-LINK_ENTITY_TO_GAME(weapon_canister);
-LINK_ENTITY_TO_GAME(weapon_cannon);
-LINK_ENTITY_TO_GAME(weapon_case);
-LINK_ENTITY_TO_GAME(weapon_cat);
-LINK_ENTITY_TO_GAME(weapon_cattleprod);
-LINK_ENTITY_TO_GAME(weapon_caws);
-LINK_ENTITY_TO_GAME(weapon_ce_lasgun);
-LINK_ENTITY_TO_GAME(weapon_ce_powersword);
-LINK_ENTITY_TO_GAME(weapon_ce_psistaff);
-LINK_ENTITY_TO_GAME(weapon_ce_rocketlauncher);
-LINK_ENTITY_TO_GAME(weapon_ce_shurikencatapult);
-LINK_ENTITY_TO_GAME(weapon_ce_shurikenpistol);
-LINK_ENTITY_TO_GAME(weapon_cellphone);
-LINK_ENTITY_TO_GAME(weapon_chaingun);
-LINK_ENTITY_TO_GAME(weapon_chainsaw);
-LINK_ENTITY_TO_GAME(weapon_charge);
-LINK_ENTITY_TO_GAME(weapon_charged);
-LINK_ENTITY_TO_GAME(weapon_chronosceptor);
-LINK_ENTITY_TO_GAME(weapon_claw);
-LINK_ENTITY_TO_GAME(weapon_claws);
-LINK_ENTITY_TO_GAME(weapon_claymore);
-LINK_ENTITY_TO_GAME(weapon_clip_generic);
-LINK_ENTITY_TO_GAME(weapon_cloak);
-LINK_ENTITY_TO_GAME(weapon_cloaker);
-LINK_ENTITY_TO_GAME(weapon_cluster);
-LINK_ENTITY_TO_GAME(weapon_cm_autocannon);
-LINK_ENTITY_TO_GAME(weapon_cm_bolter);
-LINK_ENTITY_TO_GAME(weapon_cm_bolterflamer);
-LINK_ENTITY_TO_GAME(weapon_cm_boltpistol);
-LINK_ENTITY_TO_GAME(weapon_cm_chainaxe);
-LINK_ENTITY_TO_GAME(weapon_cm_chainsword);
-LINK_ENTITY_TO_GAME(weapon_cm_flamer);
-LINK_ENTITY_TO_GAME(weapon_cm_fraggrenade);
-LINK_ENTITY_TO_GAME(weapon_cm_heavybolter);
-LINK_ENTITY_TO_GAME(weapon_cm_lascannon);
-LINK_ENTITY_TO_GAME(weapon_cm_missilelauncher);
-LINK_ENTITY_TO_GAME(weapon_cm_stormbolter);
-LINK_ENTITY_TO_GAME(weapon_cocker);
-LINK_ENTITY_TO_GAME(weapon_cocogrenade);
-LINK_ENTITY_TO_GAME(weapon_cocolauncher);
-LINK_ENTITY_TO_GAME(weapon_colt);
-LINK_ENTITY_TO_GAME(weapon_colt45);
-LINK_ENTITY_TO_GAME(weapon_coltgov);
-LINK_ENTITY_TO_GAME(weapon_colts);
-LINK_ENTITY_TO_GAME(weapon_combatknife);
-LINK_ENTITY_TO_GAME(weapon_combospell);
-LINK_ENTITY_TO_GAME(weapon_cometspell);
-LINK_ENTITY_TO_GAME(weapon_concussion);
-LINK_ENTITY_TO_GAME(weapon_controlled);
-LINK_ENTITY_TO_GAME(weapon_cougar);
-LINK_ENTITY_TO_GAME(weapon_coujaf);
-LINK_ENTITY_TO_GAME(weapon_couteau);
-LINK_ENTITY_TO_GAME(weapon_croix);
-LINK_ENTITY_TO_GAME(weapon_crossbow);
-LINK_ENTITY_TO_GAME(weapon_crowbar);
-LINK_ENTITY_TO_GAME(weapon_crowbar_electric);
-LINK_ENTITY_TO_GAME(weapon_cutlass);
-LINK_ENTITY_TO_GAME(weapon_cz75);
-LINK_ENTITY_TO_GAME(weapon_d5k);
-LINK_ENTITY_TO_GAME(weapon_dagger);
-LINK_ENTITY_TO_GAME(weapon_daystick);
-LINK_ENTITY_TO_GAME(weapon_dblpistolet);
-LINK_ENTITY_TO_GAME(weapon_dblshot);
-LINK_ENTITY_TO_GAME(weapon_dbshot);
-LINK_ENTITY_TO_GAME(weapon_dd44);
-LINK_ENTITY_TO_GAME(weapon_de50);
-LINK_ENTITY_TO_GAME(weapon_deagle);
-LINK_ENTITY_TO_GAME(weapon_deathball);
-LINK_ENTITY_TO_GAME(weapon_deathrayspell);
-LINK_ENTITY_TO_GAME(weapon_demo);
-LINK_ENTITY_TO_GAME(weapon_deploygun);
-LINK_ENTITY_TO_GAME(weapon_desert);
-LINK_ENTITY_TO_GAME(weapon_deserteagle);
-LINK_ENTITY_TO_GAME(weapon_destructodisc);
-LINK_ENTITY_TO_GAME(weapon_devastator);
-LINK_ENTITY_TO_GAME(weapon_devour);
-LINK_ENTITY_TO_GAME(weapon_disc);
-LINK_ENTITY_TO_GAME(weapon_disclauncher);
-LINK_ENTITY_TO_GAME(weapon_discoballs);
-LINK_ENTITY_TO_GAME(weapon_disintegrator);
-LINK_ENTITY_TO_GAME(weapon_displacer);
-LINK_ENTITY_TO_GAME(weapon_divinewind);
-LINK_ENTITY_TO_GAME(weapon_dm4);
-LINK_ENTITY_TO_GAME(weapon_dml);
-LINK_ENTITY_TO_GAME(weapon_double);
-LINK_ENTITY_TO_GAME(weapon_doublemagicmisslespell);
-LINK_ENTITY_TO_GAME(weapon_doubleshotgun);
-LINK_ENTITY_TO_GAME(weapon_dragonball);
-LINK_ENTITY_TO_GAME(weapon_dragonbreathspell);
-LINK_ENTITY_TO_GAME(weapon_dragonspell);
-LINK_ENTITY_TO_GAME(weapon_dragunov);
-LINK_ENTITY_TO_GAME(weapon_dsr1);
-LINK_ENTITY_TO_GAME(weapon_dualberettas);
-LINK_ENTITY_TO_GAME(weapon_dualscorpion);
-LINK_ENTITY_TO_GAME(weapon_dummy);
-LINK_ENTITY_TO_GAME(weapon_dynamite);
-LINK_ENTITY_TO_GAME(weapon_dynomite);
-LINK_ENTITY_TO_GAME(weapon_eagle);
-LINK_ENTITY_TO_GAME(weapon_eballblaster);
-LINK_ENTITY_TO_GAME(weapon_egon);
-LINK_ENTITY_TO_GAME(weapon_el_standard);
-LINK_ENTITY_TO_GAME(weapon_electro);
-LINK_ENTITY_TO_GAME(weapon_elite);
-LINK_ENTITY_TO_GAME(weapon_emag);
-LINK_ENTITY_TO_GAME(weapon_empcannon);
-LINK_ENTITY_TO_GAME(weapon_emsniper);
-LINK_ENTITY_TO_GAME(weapon_energy);
-LINK_ENTITY_TO_GAME(weapon_enfield);
-LINK_ENTITY_TO_GAME(weapon_excal);
-LINK_ENTITY_TO_GAME(weapon_experimental);
-LINK_ENTITY_TO_GAME(weapon_expgrenade);
-LINK_ENTITY_TO_GAME(weapon_exploder);
-LINK_ENTITY_TO_GAME(weapon_explogun);
-LINK_ENTITY_TO_GAME(weapon_eyelaser);
-LINK_ENTITY_TO_GAME(weapon_famas);
-LINK_ENTITY_TO_GAME(weapon_fev);
-LINK_ENTITY_TO_GAME(weapon_fg42);
-LINK_ENTITY_TO_GAME(weapon_finalflash);
-LINK_ENTITY_TO_GAME(weapon_fingerlaser);
-LINK_ENTITY_TO_GAME(weapon_finishingbuster);
-LINK_ENTITY_TO_GAME(weapon_fireballspell);
-LINK_ENTITY_TO_GAME(weapon_fishingrod);
-LINK_ENTITY_TO_GAME(weapon_fist);
-LINK_ENTITY_TO_GAME(weapon_fists);
-LINK_ENTITY_TO_GAME(weapon_fiveseven);
-LINK_ENTITY_TO_GAME(weapon_flail);
-LINK_ENTITY_TO_GAME(weapon_flakcannon);
-LINK_ENTITY_TO_GAME(weapon_flame);
-LINK_ENTITY_TO_GAME(weapon_flamegrenade);
-LINK_ENTITY_TO_GAME(weapon_flamegun);
-LINK_ENTITY_TO_GAME(weapon_flamelickspell);
-LINK_ENTITY_TO_GAME(weapon_flamer);
-LINK_ENTITY_TO_GAME(weapon_flamethrower);
-LINK_ENTITY_TO_GAME(weapon_flaregun);
-LINK_ENTITY_TO_GAME(weapon_flarepistol);
-LINK_ENTITY_TO_GAME(weapon_flashbang);
-LINK_ENTITY_TO_GAME(weapon_fleshgrenade);
-LINK_ENTITY_TO_GAME(weapon_flintlock);
-LINK_ENTITY_TO_GAME(weapon_flute);
-LINK_ENTITY_TO_GAME(weapon_fnfal);
-LINK_ENTITY_TO_GAME(weapon_fnp90);
-LINK_ENTITY_TO_GAME(weapon_forcespell);
-LINK_ENTITY_TO_GAME(weapon_frag);
-LINK_ENTITY_TO_GAME(weapon_fraggrenade);
-LINK_ENTITY_TO_GAME(weapon_freeze);
-LINK_ENTITY_TO_GAME(weapon_freezer);
-LINK_ENTITY_TO_GAME(weapon_freezerayspell);
-LINK_ENTITY_TO_GAME(weapon_friezadisc);
-LINK_ENTITY_TO_GAME(weapon_froster);
-LINK_ENTITY_TO_GAME(weapon_fusil);
-LINK_ENTITY_TO_GAME(weapon_g11);
-LINK_ENTITY_TO_GAME(weapon_g36);
-LINK_ENTITY_TO_GAME(weapon_g36c);
-LINK_ENTITY_TO_GAME(weapon_g36cs);
-LINK_ENTITY_TO_GAME(weapon_g36e);
-LINK_ENTITY_TO_GAME(weapon_g36k);
-LINK_ENTITY_TO_GAME(weapon_g3a3);
-LINK_ENTITY_TO_GAME(weapon_g3sg1);
-LINK_ENTITY_TO_GAME(weapon_ga2uss);
-LINK_ENTITY_TO_GAME(weapon_gacgoa);
-LINK_ENTITY_TO_GAME(weapon_galil);
-LINK_ENTITY_TO_GAME(weapon_gallitgun);
-LINK_ENTITY_TO_GAME(weapon_garand);
-LINK_ENTITY_TO_GAME(weapon_gasgrenade);
-LINK_ENTITY_TO_GAME(weapon_gatlin);
-LINK_ENTITY_TO_GAME(weapon_gatling);
-LINK_ENTITY_TO_GAME(weapon_gattlinggun);
-LINK_ENTITY_TO_GAME(weapon_gauss);
-LINK_ENTITY_TO_GAME(weapon_gausspistol);
-LINK_ENTITY_TO_GAME(weapon_generic);
-LINK_ENTITY_TO_GAME(weapon_genericbeam);
-LINK_ENTITY_TO_GAME(weapon_gerknife);
-LINK_ENTITY_TO_GAME(weapon_germanknife);
-LINK_ENTITY_TO_GAME(weapon_gewehr);
-LINK_ENTITY_TO_GAME(weapon_giantplantspell);
-LINK_ENTITY_TO_GAME(weapon_glauncher);
-LINK_ENTITY_TO_GAME(weapon_glock);
-LINK_ENTITY_TO_GAME(weapon_glock17);
-LINK_ENTITY_TO_GAME(weapon_glock18);
-LINK_ENTITY_TO_GAME(weapon_glock_auto);
-LINK_ENTITY_TO_GAME(weapon_glock_auto_a);
-LINK_ENTITY_TO_GAME(weapon_glstaff);
-LINK_ENTITY_TO_GAME(weapon_gluongun);
-LINK_ENTITY_TO_GAME(weapon_goaregen);
-LINK_ENTITY_TO_GAME(weapon_goldpp7);
-LINK_ENTITY_TO_GAME(weapon_gps);
-LINK_ENTITY_TO_GAME(weapon_grappin);
-LINK_ENTITY_TO_GAME(weapon_grapple);
-LINK_ENTITY_TO_GAME(weapon_grease);
-LINK_ENTITY_TO_GAME(weapon_greasegun);
-LINK_ENTITY_TO_GAME(weapon_gren);
-LINK_ENTITY_TO_GAME(weapon_grenade);
-LINK_ENTITY_TO_GAME(weapon_grenadegun);
-LINK_ENTITY_TO_GAME(weapon_grenadelauncher);
-LINK_ENTITY_TO_GAME(weapon_guardian);
-LINK_ENTITY_TO_GAME(weapon_hache);
-LINK_ENTITY_TO_GAME(weapon_hammer);
-LINK_ENTITY_TO_GAME(weapon_hand);
-LINK_ENTITY_TO_GAME(weapon_handcannon);
-LINK_ENTITY_TO_GAME(weapon_handgrenade);
-LINK_ENTITY_TO_GAME(weapon_handgrenade_ex);
-LINK_ENTITY_TO_GAME(weapon_harpoongun);
-LINK_ENTITY_TO_GAME(weapon_he);
-LINK_ENTITY_TO_GAME(weapon_healingspray);
-LINK_ENTITY_TO_GAME(weapon_heavymachinegun);
-LINK_ENTITY_TO_GAME(weapon_hegrenade);
-LINK_ENTITY_TO_GAME(weapon_helico);
-LINK_ENTITY_TO_GAME(weapon_hk21);
-LINK_ENTITY_TO_GAME(weapon_hk33);
-LINK_ENTITY_TO_GAME(weapon_hk33ka2);
-LINK_ENTITY_TO_GAME(weapon_hkmp5);
-LINK_ENTITY_TO_GAME(weapon_holybsword);
-LINK_ENTITY_TO_GAME(weapon_horar1);
-LINK_ENTITY_TO_GAME(weapon_horar2);
-LINK_ENTITY_TO_GAME(weapon_horg1);
-LINK_ENTITY_TO_GAME(weapon_horg2);
-LINK_ENTITY_TO_GAME(weapon_hormg1);
-LINK_ENTITY_TO_GAME(weapon_hormg2);
-LINK_ENTITY_TO_GAME(weapon_hornetgun);
-LINK_ENTITY_TO_GAME(weapon_hyperblaster);
-LINK_ENTITY_TO_GAME(weapon_icepokespell);
-LINK_ENTITY_TO_GAME(weapon_impulse);
-LINK_ENTITY_TO_GAME(weapon_incendiary);
-LINK_ENTITY_TO_GAME(weapon_infector);
-LINK_ENTITY_TO_GAME(weapon_invis);
-LINK_ENTITY_TO_GAME(weapon_islavezap);
-LINK_ENTITY_TO_GAME(weapon_ithaca);
-LINK_ENTITY_TO_GAME(weapon_jackhammer);
-LINK_ENTITY_TO_GAME(weapon_javelin);
-LINK_ENTITY_TO_GAME(weapon_jetfist);
-LINK_ENTITY_TO_GAME(weapon_jetpack);
-LINK_ENTITY_TO_GAME(weapon_jumpjet);
-LINK_ENTITY_TO_GAME(weapon_k43);
-LINK_ENTITY_TO_GAME(weapon_kamakazi);
-LINK_ENTITY_TO_GAME(weapon_kameha);
-LINK_ENTITY_TO_GAME(weapon_kamehameha);
-LINK_ENTITY_TO_GAME(weapon_kametorpedo);
-LINK_ENTITY_TO_GAME(weapon_kamikaze);
-LINK_ENTITY_TO_GAME(weapon_kar);
-LINK_ENTITY_TO_GAME(weapon_katana);
-LINK_ENTITY_TO_GAME(weapon_kawauso);
-LINK_ENTITY_TO_GAME(weapon_kbar);
-LINK_ENTITY_TO_GAME(weapon_kf7);
-LINK_ENTITY_TO_GAME(weapon_kiblast);
-LINK_ENTITY_TO_GAME(weapon_killsaw);
-LINK_ENTITY_TO_GAME(weapon_kmedkit);
-LINK_ENTITY_TO_GAME(weapon_knife);
-LINK_ENTITY_TO_GAME(weapon_lacrymo);
-LINK_ENTITY_TO_GAME(weapon_lance);
-LINK_ENTITY_TO_GAME(weapon_lanceflamme);
-LINK_ENTITY_TO_GAME(weapon_larve);
-LINK_ENTITY_TO_GAME(weapon_laser);
-LINK_ENTITY_TO_GAME(weapon_laser_rifle);
-LINK_ENTITY_TO_GAME(weapon_lasergatling);
-LINK_ENTITY_TO_GAME(weapon_launcher);
-LINK_ENTITY_TO_GAME(weapon_law);
-LINK_ENTITY_TO_GAME(weapon_lawgiver);
-LINK_ENTITY_TO_GAME(weapon_lawrod);
-LINK_ENTITY_TO_GAME(weapon_leap);
-LINK_ENTITY_TO_GAME(weapon_levitationspell);
-LINK_ENTITY_TO_GAME(weapon_lflamme);
-LINK_ENTITY_TO_GAME(weapon_lgrenades);
-LINK_ENTITY_TO_GAME(weapon_lightning);
-LINK_ENTITY_TO_GAME(weapon_lightningboltspell);
-LINK_ENTITY_TO_GAME(weapon_lightningcloudspell);
-LINK_ENTITY_TO_GAME(weapon_lightsaber);
-LINK_ENTITY_TO_GAME(weapon_lightsabre);
-LINK_ENTITY_TO_GAME(weapon_lngun);
-LINK_ENTITY_TO_GAME(weapon_longbow);
-LINK_ENTITY_TO_GAME(weapon_longslide);
-LINK_ENTITY_TO_GAME(weapon_longsword);
-LINK_ENTITY_TO_GAME(weapon_lr300);
-LINK_ENTITY_TO_GAME(weapon_lr300s);
-LINK_ENTITY_TO_GAME(weapon_lrifle);
-LINK_ENTITY_TO_GAME(weapon_luger);
-LINK_ENTITY_TO_GAME(weapon_m11);
-LINK_ENTITY_TO_GAME(weapon_m11sd);
-LINK_ENTITY_TO_GAME(weapon_m134);
-LINK_ENTITY_TO_GAME(weapon_m14);
-LINK_ENTITY_TO_GAME(weapon_m16);
-LINK_ENTITY_TO_GAME(weapon_m16a2);
-LINK_ENTITY_TO_GAME(weapon_m1carbine);
-LINK_ENTITY_TO_GAME(weapon_m2);
-LINK_ENTITY_TO_GAME(weapon_m21);
-LINK_ENTITY_TO_GAME(weapon_m249);
-LINK_ENTITY_TO_GAME(weapon_m3);
-LINK_ENTITY_TO_GAME(weapon_m4);
-LINK_ENTITY_TO_GAME(weapon_m40a1);
-LINK_ENTITY_TO_GAME(weapon_m41);
-LINK_ENTITY_TO_GAME(weapon_m4a1);
-LINK_ENTITY_TO_GAME(weapon_m60);
-LINK_ENTITY_TO_GAME(weapon_m61frag);
-LINK_ENTITY_TO_GAME(weapon_m67);
-LINK_ENTITY_TO_GAME(weapon_m72);
-LINK_ENTITY_TO_GAME(weapon_m76);
-LINK_ENTITY_TO_GAME(weapon_m79);
-LINK_ENTITY_TO_GAME(weapon_m82);
-LINK_ENTITY_TO_GAME(weapon_m86);
-LINK_ENTITY_TO_GAME(weapon_m92s);
-LINK_ENTITY_TO_GAME(weapon_m96);
-LINK_ENTITY_TO_GAME(weapon_m98);
-LINK_ENTITY_TO_GAME(weapon_mac);
-LINK_ENTITY_TO_GAME(weapon_mac10);
-LINK_ENTITY_TO_GAME(weapon_mace);
-LINK_ENTITY_TO_GAME(weapon_machete);
-LINK_ENTITY_TO_GAME(weapon_machinegun);
-LINK_ENTITY_TO_GAME(weapon_mag);
-LINK_ENTITY_TO_GAME(weapon_magicmisslespell);
-LINK_ENTITY_TO_GAME(weapon_main);
-LINK_ENTITY_TO_GAME(weapon_markmusket);
-LINK_ENTITY_TO_GAME(weapon_masenko);
-LINK_ENTITY_TO_GAME(weapon_mat49);
-LINK_ENTITY_TO_GAME(weapon_match);
-LINK_ENTITY_TO_GAME(weapon_matrix);
-LINK_ENTITY_TO_GAME(weapon_maverick);
-LINK_ENTITY_TO_GAME(weapon_mc51);
-LINK_ENTITY_TO_GAME(weapon_medic);
-LINK_ENTITY_TO_GAME(weapon_medikit);
-LINK_ENTITY_TO_GAME(weapon_medkit);
-LINK_ENTITY_TO_GAME(weapon_melee);
-LINK_ENTITY_TO_GAME(weapon_metabolize);
-LINK_ENTITY_TO_GAME(weapon_meteorspell);
-LINK_ENTITY_TO_GAME(weapon_mf2);
-LINK_ENTITY_TO_GAME(weapon_mg34);
-LINK_ENTITY_TO_GAME(weapon_mg36);
-LINK_ENTITY_TO_GAME(weapon_mg42);
-LINK_ENTITY_TO_GAME(weapon_microuzi);
-LINK_ENTITY_TO_GAME(weapon_microuzi_a);
-LINK_ENTITY_TO_GAME(weapon_mindmisslespell);
-LINK_ENTITY_TO_GAME(weapon_mindray);
-LINK_ENTITY_TO_GAME(weapon_mine);
-LINK_ENTITY_TO_GAME(weapon_minicanon);
-LINK_ENTITY_TO_GAME(weapon_minigun);
-LINK_ENTITY_TO_GAME(weapon_mk23);
-LINK_ENTITY_TO_GAME(weapon_model98);
-LINK_ENTITY_TO_GAME(weapon_molotov);
-LINK_ENTITY_TO_GAME(weapon_molotov_cocktail);
-LINK_ENTITY_TO_GAME(weapon_mop);
-LINK_ENTITY_TO_GAME(weapon_mortar);
-LINK_ENTITY_TO_GAME(weapon_mortier);
-LINK_ENTITY_TO_GAME(weapon_morve);
-LINK_ENTITY_TO_GAME(weapon_mosin);
-LINK_ENTITY_TO_GAME(weapon_mossberg);
-LINK_ENTITY_TO_GAME(weapon_mouthblast);
-LINK_ENTITY_TO_GAME(weapon_mouton);
-LINK_ENTITY_TO_GAME(weapon_mp40);
-LINK_ENTITY_TO_GAME(weapon_mp44);
-LINK_ENTITY_TO_GAME(weapon_mp5);
-LINK_ENTITY_TO_GAME(weapon_mp510);
-LINK_ENTITY_TO_GAME(weapon_mp5a2);
-LINK_ENTITY_TO_GAME(weapon_mp5a4);
-LINK_ENTITY_TO_GAME(weapon_mp5a5);
-LINK_ENTITY_TO_GAME(weapon_mp5k);
-LINK_ENTITY_TO_GAME(weapon_mp5ktac);
-LINK_ENTITY_TO_GAME(weapon_mp5navy);
-LINK_ENTITY_TO_GAME(weapon_mp5pdw);
-LINK_ENTITY_TO_GAME(weapon_mp5sd);
-LINK_ENTITY_TO_GAME(weapon_mp5sd5);
-LINK_ENTITY_TO_GAME(weapon_msg90);
-LINK_ENTITY_TO_GAME(weapon_musket);
-LINK_ENTITY_TO_GAME(weapon_musketoon);
-LINK_ENTITY_TO_GAME(weapon_mustardgrenade);
-LINK_ENTITY_TO_GAME(weapon_mwgun);
-LINK_ENTITY_TO_GAME(weapon_nailgun);
-LINK_ENTITY_TO_GAME(weapon_napalm);
-LINK_ENTITY_TO_GAME(weapon_narcogrenade);
-LINK_ENTITY_TO_GAME(weapon_ndagger);
-LINK_ENTITY_TO_GAME(weapon_needle);
-LINK_ENTITY_TO_GAME(weapon_nervegrenade);
-LINK_ENTITY_TO_GAME(weapon_ngun);
-LINK_ENTITY_TO_GAME(weapon_nightstick);
-LINK_ENTITY_TO_GAME(weapon_not_in_use_grenade);
-LINK_ENTITY_TO_GAME(weapon_nukegun);
-LINK_ENTITY_TO_GAME(weapon_nuker);
-LINK_ENTITY_TO_GAME(weapon_null);
-LINK_ENTITY_TO_GAME(weapon_nva_grenade);
-LINK_ENTITY_TO_GAME(weapon_oicw);
-LINK_ENTITY_TO_GAME(weapon_omen);
-LINK_ENTITY_TO_GAME(weapon_orbital);
-LINK_ENTITY_TO_GAME(weapon_orracle);
-LINK_ENTITY_TO_GAME(weapon_p225);
-LINK_ENTITY_TO_GAME(weapon_p226);
-LINK_ENTITY_TO_GAME(weapon_p226mp);
-LINK_ENTITY_TO_GAME(weapon_p228);
-LINK_ENTITY_TO_GAME(weapon_p90);
-LINK_ENTITY_TO_GAME(weapon_p99);
-LINK_ENTITY_TO_GAME(weapon_paintball);
-LINK_ENTITY_TO_GAME(weapon_paintgrenade);
-LINK_ENTITY_TO_GAME(weapon_paralysis);
-LINK_ENTITY_TO_GAME(weapon_parasite);
-LINK_ENTITY_TO_GAME(weapon_parrot);
-LINK_ENTITY_TO_GAME(weapon_pdw);
-LINK_ENTITY_TO_GAME(weapon_penguin);
-LINK_ENTITY_TO_GAME(weapon_pgp);
-LINK_ENTITY_TO_GAME(weapon_phantom);
-LINK_ENTITY_TO_GAME(weapon_phoenix);
-LINK_ENTITY_TO_GAME(weapon_photongun);
-LINK_ENTITY_TO_GAME(weapon_piat);
-LINK_ENTITY_TO_GAME(weapon_pick);
-LINK_ENTITY_TO_GAME(weapon_pigeon);
-LINK_ENTITY_TO_GAME(weapon_pipebomb);
-LINK_ENTITY_TO_GAME(weapon_pipewrench);
-LINK_ENTITY_TO_GAME(weapon_pistol);
-LINK_ENTITY_TO_GAME(weapon_pistolet);
-LINK_ENTITY_TO_GAME(weapon_pkm);
-LINK_ENTITY_TO_GAME(weapon_plasma);
-LINK_ENTITY_TO_GAME(weapon_plasmarifle);
-LINK_ENTITY_TO_GAME(weapon_plauncher);
-LINK_ENTITY_TO_GAME(weapon_pmine);
-LINK_ENTITY_TO_GAME(weapon_poison);
-LINK_ENTITY_TO_GAME(weapon_poolstick);
-LINK_ENTITY_TO_GAME(weapon_powderkeg);
-LINK_ENTITY_TO_GAME(weapon_powerbeam);
-LINK_ENTITY_TO_GAME(weapon_powerblade);
-LINK_ENTITY_TO_GAME(weapon_prifle);
-LINK_ENTITY_TO_GAME(weapon_primalscream);
-LINK_ENTITY_TO_GAME(weapon_proximity);
-LINK_ENTITY_TO_GAME(weapon_pschreck);
-LINK_ENTITY_TO_GAME(weapon_psg);
-LINK_ENTITY_TO_GAME(weapon_psg1);
-LINK_ENTITY_TO_GAME(weapon_pt);
-LINK_ENTITY_TO_GAME(weapon_pulserifle);
-LINK_ENTITY_TO_GAME(weapon_pushhands);
-LINK_ENTITY_TO_GAME(weapon_python);
-LINK_ENTITY_TO_GAME(weapon_quakegun);
-LINK_ENTITY_TO_GAME(weapon_radio);
-LINK_ENTITY_TO_GAME(weapon_railgun);
-LINK_ENTITY_TO_GAME(weapon_ralkek);
-LINK_ENTITY_TO_GAME(weapon_rallyhp);
-LINK_ENTITY_TO_GAME(weapon_rbull);
-LINK_ENTITY_TO_GAME(weapon_rcp90);
-LINK_ENTITY_TO_GAME(weapon_redeemer);
-LINK_ENTITY_TO_GAME(weapon_reetou);
-LINK_ENTITY_TO_GAME(weapon_regeneration);
-LINK_ENTITY_TO_GAME(weapon_rem1100);
-LINK_ENTITY_TO_GAME(weapon_remington);
-LINK_ENTITY_TO_GAME(weapon_renzoku);
-LINK_ENTITY_TO_GAME(weapon_resource);
-LINK_ENTITY_TO_GAME(weapon_rgd5);
-LINK_ENTITY_TO_GAME(weapon_rifle);
-LINK_ENTITY_TO_GAME(weapon_rmine);
-LINK_ENTITY_TO_GAME(weapon_rocketlauncher);
-LINK_ENTITY_TO_GAME(weapon_rocketpistol);
-LINK_ENTITY_TO_GAME(weapon_rollingstonespell);
-LINK_ENTITY_TO_GAME(weapon_rpd);
-LINK_ENTITY_TO_GAME(weapon_rpg);
-LINK_ENTITY_TO_GAME(weapon_rpg7);
-LINK_ENTITY_TO_GAME(weapon_rs202m2);
-LINK_ENTITY_TO_GAME(weapon_rs_meta);
-LINK_ENTITY_TO_GAME(weapon_ruche);
-LINK_ENTITY_TO_GAME(weapon_ruger);
-LINK_ENTITY_TO_GAME(weapon_rumgun);
-LINK_ENTITY_TO_GAME(weapon_runner);
-LINK_ENTITY_TO_GAME(weapon_sa80);
-LINK_ENTITY_TO_GAME(weapon_saa);
-LINK_ENTITY_TO_GAME(weapon_saber);
-LINK_ENTITY_TO_GAME(weapon_sabers);
-LINK_ENTITY_TO_GAME(weapon_saiga);
-LINK_ENTITY_TO_GAME(weapon_sainte);
-LINK_ENTITY_TO_GAME(weapon_sako);
-LINK_ENTITY_TO_GAME(weapon_satchel);
-LINK_ENTITY_TO_GAME(weapon_satelitelaser);
-LINK_ENTITY_TO_GAME(weapon_satellite);
-LINK_ENTITY_TO_GAME(weapon_sawed);
-LINK_ENTITY_TO_GAME(weapon_sawedoff);
-LINK_ENTITY_TO_GAME(weapon_sawgun);
-LINK_ENTITY_TO_GAME(weapon_sbarrel);
-LINK_ENTITY_TO_GAME(weapon_scatterbeam);
-LINK_ENTITY_TO_GAME(weapon_scattergun);
-LINK_ENTITY_TO_GAME(weapon_scattershot);
-LINK_ENTITY_TO_GAME(weapon_scopedenfield);
-LINK_ENTITY_TO_GAME(weapon_scopedfg42);
-LINK_ENTITY_TO_GAME(weapon_scopedkar);
-LINK_ENTITY_TO_GAME(weapon_scorpion);
-LINK_ENTITY_TO_GAME(weapon_scout);
-LINK_ENTITY_TO_GAME(weapon_seburo);
-LINK_ENTITY_TO_GAME(weapon_sensu);
-LINK_ENTITY_TO_GAME(weapon_seringue);
-LINK_ENTITY_TO_GAME(weapon_sg550);
-LINK_ENTITY_TO_GAME(weapon_sg552);
-LINK_ENTITY_TO_GAME(weapon_sgenerator);
-LINK_ENTITY_TO_GAME(weapon_shield);
-LINK_ENTITY_TO_GAME(weapon_shieldattack);
-LINK_ENTITY_TO_GAME(weapon_shieldgun);
-LINK_ENTITY_TO_GAME(weapon_shieldspell);
-LINK_ENTITY_TO_GAME(weapon_shocker);
-LINK_ENTITY_TO_GAME(weapon_shocker2k);
-LINK_ENTITY_TO_GAME(weapon_shockrifle);
-LINK_ENTITY_TO_GAME(weapon_shockroach);
-LINK_ENTITY_TO_GAME(weapon_shotgun);
-LINK_ENTITY_TO_GAME(weapon_shrinker);
-LINK_ENTITY_TO_GAME(weapon_sig);
-LINK_ENTITY_TO_GAME(weapon_sig245);
-LINK_ENTITY_TO_GAME(weapon_sig550);
-LINK_ENTITY_TO_GAME(weapon_sigpro);
-LINK_ENTITY_TO_GAME(weapon_silverpp7);
-LINK_ENTITY_TO_GAME(weapon_sixshooter);
-LINK_ENTITY_TO_GAME(weapon_skeletonspell);
-LINK_ENTITY_TO_GAME(weapon_sks);
-LINK_ENTITY_TO_GAME(weapon_skullspell);
-LINK_ENTITY_TO_GAME(weapon_skunk);
-LINK_ENTITY_TO_GAME(weapon_sl68);
-LINK_ENTITY_TO_GAME(weapon_slappers);
-LINK_ENTITY_TO_GAME(weapon_sledge);
-LINK_ENTITY_TO_GAME(weapon_sledgehammer);
-LINK_ENTITY_TO_GAME(weapon_sm_assaultcannon);
-LINK_ENTITY_TO_GAME(weapon_sm_bolter);
-LINK_ENTITY_TO_GAME(weapon_sm_boltpistol);
-LINK_ENTITY_TO_GAME(weapon_sm_combatknife);
-LINK_ENTITY_TO_GAME(weapon_sm_flamer);
-LINK_ENTITY_TO_GAME(weapon_sm_fraggrenade);
-LINK_ENTITY_TO_GAME(weapon_sm_heavybolter);
-LINK_ENTITY_TO_GAME(weapon_sm_heavyflamer);
-LINK_ENTITY_TO_GAME(weapon_sm_lascannon);
-LINK_ENTITY_TO_GAME(weapon_sm_missilelauncher);
-LINK_ENTITY_TO_GAME(weapon_sm_poweraxe);
-LINK_ENTITY_TO_GAME(weapon_sm_powersword);
-LINK_ENTITY_TO_GAME(weapon_sm_stormbolter);
-LINK_ENTITY_TO_GAME(weapon_smartgun);
-LINK_ENTITY_TO_GAME(weapon_smaw);
-LINK_ENTITY_TO_GAME(weapon_smg9);
-LINK_ENTITY_TO_GAME(weapon_smkgrenade);
-LINK_ENTITY_TO_GAME(weapon_smoke);
-LINK_ENTITY_TO_GAME(weapon_smokegrenade);
-LINK_ENTITY_TO_GAME(weapon_snUZI);
-LINK_ENTITY_TO_GAME(weapon_snark);
-LINK_ENTITY_TO_GAME(weapon_snipe);
-LINK_ENTITY_TO_GAME(weapon_sniper);
-LINK_ENTITY_TO_GAME(weapon_sniper3);
-LINK_ENTITY_TO_GAME(weapon_sniperrifle);
-LINK_ENTITY_TO_GAME(weapon_snowball);
-LINK_ENTITY_TO_GAME(weapon_socom);
-LINK_ENTITY_TO_GAME(weapon_socomtac);
-LINK_ENTITY_TO_GAME(weapon_solarflare);
-LINK_ENTITY_TO_GAME(weapon_soniccannon);
-LINK_ENTITY_TO_GAME(weapon_sonicgrenade);
-LINK_ENTITY_TO_GAME(weapon_spade);
-LINK_ENTITY_TO_GAME(weapon_spas);
-LINK_ENTITY_TO_GAME(weapon_spas12);
-LINK_ENTITY_TO_GAME(weapon_spear);
-LINK_ENTITY_TO_GAME(weapon_specialbeamcannon);
-LINK_ENTITY_TO_GAME(weapon_spectre);
-LINK_ENTITY_TO_GAME(weapon_spider);
-LINK_ENTITY_TO_GAME(weapon_spiderbomb);
-LINK_ENTITY_TO_GAME(weapon_spikegun);
-LINK_ENTITY_TO_GAME(weapon_spiritbomb);
-LINK_ENTITY_TO_GAME(weapon_spiritwizspell);
-LINK_ENTITY_TO_GAME(weapon_spit);
-LINK_ENTITY_TO_GAME(weapon_spitcarbine);
-LINK_ENTITY_TO_GAME(weapon_spitpistol);
-LINK_ENTITY_TO_GAME(weapon_spore);
-LINK_ENTITY_TO_GAME(weapon_sporelauncher);
-LINK_ENTITY_TO_GAME(weapon_spotboltspell);
-LINK_ENTITY_TO_GAME(weapon_spring);
-LINK_ENTITY_TO_GAME(weapon_spy);
-LINK_ENTITY_TO_GAME(weapon_spycam);
-LINK_ENTITY_TO_GAME(weapon_spyder);
-LINK_ENTITY_TO_GAME(weapon_srifle);
-LINK_ENTITY_TO_GAME(weapon_ssg3000);
-LINK_ENTITY_TO_GAME(weapon_sshotgun);
-LINK_ENTITY_TO_GAME(weapon_st_far);
-LINK_ENTITY_TO_GAME(weapon_st_heavy);
-LINK_ENTITY_TO_GAME(weapon_st_medium);
-LINK_ENTITY_TO_GAME(weapon_st_melee);
-LINK_ENTITY_TO_GAME(weapon_st_power);
-LINK_ENTITY_TO_GAME(weapon_st_psi);
-LINK_ENTITY_TO_GAME(weapon_st_short);
-LINK_ENTITY_TO_GAME(weapon_st_special);
-LINK_ENTITY_TO_GAME(weapon_st_throw);
-LINK_ENTITY_TO_GAME(weapon_staff);
-LINK_ENTITY_TO_GAME(weapon_star);
-LINK_ENTITY_TO_GAME(weapon_sten);
-LINK_ENTITY_TO_GAME(weapon_sterling);
-LINK_ENTITY_TO_GAME(weapon_steyr_m40);
-LINK_ENTITY_TO_GAME(weapon_stg24);
-LINK_ENTITY_TO_GAME(weapon_stickgrenade);
-LINK_ENTITY_TO_GAME(weapon_stickgrenade_ex);
-LINK_ENTITY_TO_GAME(weapon_stinger);
-LINK_ENTITY_TO_GAME(weapon_stingray2);
-LINK_ENTITY_TO_GAME(weapon_stomp);
-LINK_ENTITY_TO_GAME(weapon_stoner);
-LINK_ENTITY_TO_GAME(weapon_stonerscope);
-LINK_ENTITY_TO_GAME(weapon_stonersilencer);
-LINK_ENTITY_TO_GAME(weapon_stubgun);
-LINK_ENTITY_TO_GAME(weapon_stumpgun);
-LINK_ENTITY_TO_GAME(weapon_stupid);
-LINK_ENTITY_TO_GAME(weapon_super_mouton);
-LINK_ENTITY_TO_GAME(weapon_supernailgun);
-LINK_ENTITY_TO_GAME(weapon_supershotgun);
-LINK_ENTITY_TO_GAME(weapon_svd);
-LINK_ENTITY_TO_GAME(weapon_swarm_gargflame);
-LINK_ENTITY_TO_GAME(weapon_swipe);
-LINK_ENTITY_TO_GAME(weapon_sword);
-LINK_ENTITY_TO_GAME(weapon_syringe);
-LINK_ENTITY_TO_GAME(weapon_tacgun);
-LINK_ENTITY_TO_GAME(weapon_taucannon);
-LINK_ENTITY_TO_GAME(weapon_tavor);
-LINK_ENTITY_TO_GAME(weapon_tdagger);
-LINK_ENTITY_TO_GAME(weapon_tec9);
-LINK_ENTITY_TO_GAME(weapon_telekinesis);
-LINK_ENTITY_TO_GAME(weapon_teleporter);
-LINK_ENTITY_TO_GAME(weapon_teleporteur);
-LINK_ENTITY_TO_GAME(weapon_teslagun);
-LINK_ENTITY_TO_GAME(weapon_thompson);
-LINK_ENTITY_TO_GAME(weapon_thornblastspell);
-LINK_ENTITY_TO_GAME(weapon_throwaxe);
-LINK_ENTITY_TO_GAME(weapon_throwing_knife);
-LINK_ENTITY_TO_GAME(weapon_throwingknife);
-LINK_ENTITY_TO_GAME(weapon_timmy);
-LINK_ENTITY_TO_GAME(weapon_tknife);
-LINK_ENTITY_TO_GAME(weapon_tmine);
-LINK_ENTITY_TO_GAME(weapon_tmp);
-LINK_ENTITY_TO_GAME(weapon_tnt);
-LINK_ENTITY_TO_GAME(weapon_toad);
-LINK_ENTITY_TO_GAME(weapon_tokarev);
-LINK_ENTITY_TO_GAME(weapon_tomahawk);
-LINK_ENTITY_TO_GAME(weapon_tommy);
-LINK_ENTITY_TO_GAME(weapon_tommygun);
-LINK_ENTITY_TO_GAME(weapon_tornadospell);
-LINK_ENTITY_TO_GAME(weapon_transistor);
-LINK_ENTITY_TO_GAME(weapon_translocator);
-LINK_ENTITY_TO_GAME(weapon_treasure);
-LINK_ENTITY_TO_GAME(weapon_trident);
-LINK_ENTITY_TO_GAME(weapon_trigun);
-LINK_ENTITY_TO_GAME(weapon_triplaser);
-LINK_ENTITY_TO_GAME(weapon_tripmine);
-LINK_ENTITY_TO_GAME(weapon_trooper);
-LINK_ENTITY_TO_GAME(weapon_tsgun);
-LINK_ENTITY_TO_GAME(weapon_tucan);
-LINK_ENTITY_TO_GAME(weapon_turret);
-LINK_ENTITY_TO_GAME(weapon_twosword);
-LINK_ENTITY_TO_GAME(weapon_u2);
-LINK_ENTITY_TO_GAME(weapon_umbra);
-LINK_ENTITY_TO_GAME(weapon_umbrella);
-LINK_ENTITY_TO_GAME(weapon_ump45);
-LINK_ENTITY_TO_GAME(weapon_updraftspell);
-LINK_ENTITY_TO_GAME(weapon_us_grenade);
-LINK_ENTITY_TO_GAME(weapon_usas);
-LINK_ENTITY_TO_GAME(weapon_usas12);
-LINK_ENTITY_TO_GAME(weapon_usp);
-LINK_ENTITY_TO_GAME(weapon_uspmp);
-LINK_ENTITY_TO_GAME(weapon_uzi);
-LINK_ENTITY_TO_GAME(weapon_uziakimbo);
-LINK_ENTITY_TO_GAME(weapon_vepr);
-LINK_ENTITY_TO_GAME(weapon_viksword);
-LINK_ENTITY_TO_GAME(weapon_vomit);
-LINK_ENTITY_TO_GAME(weapon_vsbike);
-LINK_ENTITY_TO_GAME(weapon_vsclaw);
-LINK_ENTITY_TO_GAME(weapon_vscolt);
-LINK_ENTITY_TO_GAME(weapon_vscrossbow);
-LINK_ENTITY_TO_GAME(weapon_vscue);
-LINK_ENTITY_TO_GAME(weapon_vsdbshotgun);
-LINK_ENTITY_TO_GAME(weapon_vsmp5);
-LINK_ENTITY_TO_GAME(weapon_vsshotgun);
-LINK_ENTITY_TO_GAME(weapon_vsstake);
-LINK_ENTITY_TO_GAME(weapon_vsthunderfive);
-LINK_ENTITY_TO_GAME(weapon_vswinchester);
-LINK_ENTITY_TO_GAME(weapon_vulcan);
-LINK_ENTITY_TO_GAME(weapon_wa2000);
-LINK_ENTITY_TO_GAME(weapon_warhammer);
-LINK_ENTITY_TO_GAME(weapon_webley);
-LINK_ENTITY_TO_GAME(weapon_webspinner);
-LINK_ENTITY_TO_GAME(weapon_welder);
-LINK_ENTITY_TO_GAME(weapon_whirlwindspell);
-LINK_ENTITY_TO_GAME(weapon_whiskey);
-LINK_ENTITY_TO_GAME(weapon_whiterayspell);
-LINK_ENTITY_TO_GAME(weapon_whl);
-LINK_ENTITY_TO_GAME(weapon_winchester);
-LINK_ENTITY_TO_GAME(weapon_wombatspell);
-LINK_ENTITY_TO_GAME(weapon_wyvernspell);
-LINK_ENTITY_TO_GAME(weapon_xbow);
-LINK_ENTITY_TO_GAME(weapon_xm1014);
-LINK_ENTITY_TO_GAME(weapon_xm4);
-LINK_ENTITY_TO_GAME(weapon_zat);
-LINK_ENTITY_TO_GAME(weapon_zatarc);
-LINK_ENTITY_TO_GAME(weapon_zmg);
-LINK_ENTITY_TO_GAME(weaponbox);
-LINK_ENTITY_TO_GAME(weather_genie);
-LINK_ENTITY_TO_GAME(weather_litnode);
-LINK_ENTITY_TO_GAME(webgunprojectile);
-LINK_ENTITY_TO_GAME(wh);
-LINK_ENTITY_TO_GAME(wheel);
-LINK_ENTITY_TO_GAME(wheel_ent);
-LINK_ENTITY_TO_GAME(whiskey_whisk);
-LINK_ENTITY_TO_GAME(whshard);
-LINK_ENTITY_TO_GAME(world_areacontrol);
-LINK_ENTITY_TO_GAME(world_artefact);
-LINK_ENTITY_TO_GAME(world_capturelocation);
-LINK_ENTITY_TO_GAME(world_items);
LINK_ENTITY_TO_GAME(worldspawn);
-LINK_ENTITY_TO_GAME(ww_ammo_satchels);
-LINK_ENTITY_TO_GAME(ww_ammo_spellbook);
-LINK_ENTITY_TO_GAME(ww_bearbite);
-LINK_ENTITY_TO_GAME(ww_emitter);
-LINK_ENTITY_TO_GAME(ww_monstermaker);
-LINK_ENTITY_TO_GAME(ww_satchel);
-LINK_ENTITY_TO_GAME(ww_satchel_archmage);
-LINK_ENTITY_TO_GAME(ww_satchel_death);
-LINK_ENTITY_TO_GAME(ww_satchel_dragon);
-LINK_ENTITY_TO_GAME(ww_satchel_earth);
-LINK_ENTITY_TO_GAME(ww_satchel_fire);
-LINK_ENTITY_TO_GAME(ww_satchel_ice);
-LINK_ENTITY_TO_GAME(ww_satchel_life);
-LINK_ENTITY_TO_GAME(ww_satchel_lightning);
-LINK_ENTITY_TO_GAME(ww_satchel_nature);
-LINK_ENTITY_TO_GAME(ww_satchel_wind);
-LINK_ENTITY_TO_GAME(ww_seal);
-LINK_ENTITY_TO_GAME(ww_seal_death);
-LINK_ENTITY_TO_GAME(ww_seal_dragon);
-LINK_ENTITY_TO_GAME(ww_seal_earth);
-LINK_ENTITY_TO_GAME(ww_seal_fire);
-LINK_ENTITY_TO_GAME(ww_seal_ice);
-LINK_ENTITY_TO_GAME(ww_seal_life);
-LINK_ENTITY_TO_GAME(ww_seal_lightning);
-LINK_ENTITY_TO_GAME(ww_seal_nature);
-LINK_ENTITY_TO_GAME(ww_seal_wind);
-LINK_ENTITY_TO_GAME(ww_sentrycrystal);
-LINK_ENTITY_TO_GAME(ww_spell_beanstalk);
-LINK_ENTITY_TO_GAME(ww_spell_bird);
-LINK_ENTITY_TO_GAME(ww_spell_deathray);
-LINK_ENTITY_TO_GAME(ww_spell_doublemissile);
-LINK_ENTITY_TO_GAME(ww_spell_dragonbreath);
-LINK_ENTITY_TO_GAME(ww_spell_fireball);
-LINK_ENTITY_TO_GAME(ww_spell_flamelick);
-LINK_ENTITY_TO_GAME(ww_spell_forceblast);
-LINK_ENTITY_TO_GAME(ww_spell_freezeray);
-LINK_ENTITY_TO_GAME(ww_spell_iceshard);
-LINK_ENTITY_TO_GAME(ww_spell_levitate);
-LINK_ENTITY_TO_GAME(ww_spell_lightningbolt);
-LINK_ENTITY_TO_GAME(ww_spell_missile);
-LINK_ENTITY_TO_GAME(ww_spell_pebbleblast);
-LINK_ENTITY_TO_GAME(ww_spell_seal);
-LINK_ENTITY_TO_GAME(ww_spell_shield);
-LINK_ENTITY_TO_GAME(ww_spell_skull);
-LINK_ENTITY_TO_GAME(ww_spell_spotbolt);
-LINK_ENTITY_TO_GAME(ww_spell_stone);
-LINK_ENTITY_TO_GAME(ww_spell_thornblast);
-LINK_ENTITY_TO_GAME(ww_spell_updraft);
-LINK_ENTITY_TO_GAME(ww_spell_whiteray);
-LINK_ENTITY_TO_GAME(ww_spell_wyvern);
-LINK_ENTITY_TO_GAME(ww_staff);
-LINK_ENTITY_TO_GAME(wyvern);
-LINK_ENTITY_TO_GAME(xbow_teather);
-LINK_ENTITY_TO_GAME(xbowbolt);
-LINK_ENTITY_TO_GAME(xen_hair);
-LINK_ENTITY_TO_GAME(xen_hull);
-LINK_ENTITY_TO_GAME(xen_plantlight);
-LINK_ENTITY_TO_GAME(xen_spore_large);
-LINK_ENTITY_TO_GAME(xen_spore_medium);
-LINK_ENTITY_TO_GAME(xen_spore_small);
-LINK_ENTITY_TO_GAME(xen_tree);
-LINK_ENTITY_TO_GAME(xen_ttrigger);
-LINK_ENTITY_TO_GAME(zatarc_proj);
-LINK_ENTITY_TO_GAME(zone);
-LINK_ENTITY_TO_GAME(zone_bomb_target);
-LINK_ENTITY_TO_GAME(zone_capture);
-LINK_ENTITY_TO_GAME(zone_gatetravel);
-LINK_ENTITY_TO_GAME(zone_nodamage);
-LINK_ENTITY_TO_GAME(zone_shelter);
diff --git a/metamod/src/mem_utils.cpp b/metamod/src/mem_utils.cpp
new file mode 100644
index 0000000..5821e06
--- /dev/null
+++ b/metamod/src/mem_utils.cpp
@@ -0,0 +1,118 @@
+#include "precompiled.h"
+
+static_allocator::static_allocator(memory_protection protection) : m_protection(protection)
+{
+}
+
+char *static_allocator::allocate(const size_t n)
+{
+ if (!m_pages.size() || m_used + n > Pagesize)
+ allocate_page();
+
+ auto ptr = reinterpret_cast(m_pages.back()) + m_used;
+ m_used += n;
+ return ptr;
+}
+
+char *static_allocator::strdup(const char *string)
+{
+ size_t len = Q_strlen(string) + 1;
+ return (char *)Q_memcpy(allocate(len), string, len);
+}
+
+void static_allocator::deallocate_all()
+{
+ for (auto page : m_pages)
+#ifdef WIN32
+ VirtualFree(page, 0, MEM_RELEASE);
+#else
+ munmap(page, Pagesize);
+#endif
+
+ m_pages.clear();
+}
+
+size_t static_allocator::memory_used() const
+{
+ return (m_pages.size() - 1) * Pagesize + m_used;
+}
+
+bool static_allocator::contain(uint32 addr)
+{
+ for (auto p : m_pages) {
+ if (uint32(p) <= addr && addr < uint32(p) + Pagesize)
+ return true;
+ }
+ return false;
+}
+
+char *static_allocator::find_pattern(char *pattern, size_t len)
+{
+ for (auto p : m_pages) {
+ for (char *c = (char *)p, *e = c + Pagesize - len; c < e; c++) {
+ if (mem_compare(c, pattern, len))
+ return c;
+ }
+ }
+ return nullptr;
+}
+
+void static_allocator::allocate_page()
+{
+#ifdef WIN32
+ auto page = VirtualAlloc(nullptr, Pagesize, MEM_COMMIT, PAGE_EXECUTE_READWRITE);
+#else
+ auto page = mmap(nullptr, Pagesize, PROT_READ | PROT_WRITE | PROT_EXEC, MAP_ANONYMOUS | MAP_PRIVATE, 0, 0);
+#endif
+
+ m_used = 0;
+ m_pages.push_back(page);
+}
+
+bool mem_compare(const char *addr, const char *pattern, size_t len)
+{
+ for (auto c = pattern, pattern_end = pattern + len; c < pattern_end; ++c, ++addr) {
+ if (*c == *addr || *c == '\x2A')
+ continue;
+ return false;
+ }
+ return true;
+}
+
+char *mem_find_pattern(char *pos, int range, const char *pattern, size_t len)
+{
+ for (auto c = pos + range - len; pos < c; ++pos) {
+ if (mem_compare(pos, pattern, len))
+ return pos;
+ }
+
+ return nullptr;
+}
+
+char *mem_find_ref(char *pos, char *end, char opcode, uint32 ref, bool relative)
+{
+ for (; pos < end; ++pos)
+ {
+ if (*pos == opcode)
+ {
+ if (relative)
+ {
+ if ((uint32)pos + 5 + *(uint32 *)(pos + 1) == ref)
+ return pos;
+ }
+ else
+ {
+ if (*(uint32 *)(pos + 1) == ref)
+ return pos;
+ }
+ }
+ }
+
+ return nullptr;
+}
+
+char *mem_find_string_push(char *addr, const char *string, size_t len)
+{
+ char *ptr = mem_find_pattern(addr, len, string, Q_strlen(string) + 1);
+ return mem_find_ref(addr, addr + len - 5, '\x68', (uint32)ptr, false);
+}
diff --git a/metamod/src/mem_utils.h b/metamod/src/mem_utils.h
new file mode 100644
index 0000000..1ddc4b0
--- /dev/null
+++ b/metamod/src/mem_utils.h
@@ -0,0 +1,49 @@
+#pragma once
+
+class static_allocator
+{
+public:
+ enum memory_protection : uint8
+ {
+#ifdef _WIN32
+ mp_readwrite = PAGE_READWRITE,
+ mp_rwx = PAGE_EXECUTE_READWRITE
+#else
+ mp_readwrite = PROT_READ | PROT_WRITE,
+ mp_rwx = PROT_READ | PROT_WRITE | PROT_EXEC
+#endif
+ };
+
+ static_allocator(memory_protection protection);
+ char *allocate(const size_t n);
+ char *strdup(const char *string);
+ void deallocate_all();
+ size_t memory_used() const;
+ bool contain(uint32 addr);
+ char *find_pattern(char *pattern, size_t len);
+
+ template
+ T *allocate()
+ {
+ return (T *)allocate(sizeof(T));
+ }
+
+private:
+ void allocate_page();
+
+ enum
+ {
+ Pagesize = 4096
+ };
+
+ size_t m_used = 0;
+ std::vector m_pages;
+ memory_protection m_protection;
+
+ friend class CJit;
+};
+
+bool mem_compare(const char *addr, const char *pattern, size_t len);
+char *mem_find_pattern(char *pos, int range, const char *pattern, size_t len);
+char *mem_find_ref(char *pos, char *end, char opcode, uint32 ref, bool relative);
+char *mem_find_string_push(char *addr, const char *string, size_t len);
diff --git a/metamod/src/meta_rehlds_api.cpp b/metamod/src/meta_rehlds_api.cpp
new file mode 100644
index 0000000..cbdd903
--- /dev/null
+++ b/metamod/src/meta_rehlds_api.cpp
@@ -0,0 +1,55 @@
+#include "precompiled.h"
+
+IRehldsApi* g_RehldsApi;
+const RehldsFuncs_t* g_RehldsFuncs;
+IRehldsHookchains* g_RehldsHookchains;
+IRehldsServerStatic* g_RehldsSvs;
+
+bool rehlds_api_init(CSysModule* engineModule)
+{
+ if (!engineModule) {
+ META_ERROR("Failed to locate engine module\n");
+ return false;
+ }
+
+ CreateInterfaceFn ifaceFactory = Sys_GetFactory(engineModule);
+ if (!ifaceFactory) {
+ META_ERROR("Failed to locate interface factory in engine module\n");
+ return false;
+ }
+
+ int retCode = 0;
+ g_RehldsApi = (IRehldsApi*)ifaceFactory(VREHLDS_HLDS_API_VERSION, &retCode);
+ if (!g_RehldsApi) {
+ return false;
+ }
+
+ int majorVersion = g_RehldsApi->GetMajorVersion();
+ int minorVersion = g_RehldsApi->GetMinorVersion();
+
+ if (majorVersion != REHLDS_API_VERSION_MAJOR) {
+ META_ERROR("REHLDS Api major version mismatch; expected %d, real %d\n", REHLDS_API_VERSION_MAJOR, majorVersion);
+ return false;
+ }
+
+ if (minorVersion < REHLDS_API_VERSION_MINOR) {
+ META_ERROR("REHLDS Api minor version mismatch; expected at least %d, real %d\n", REHLDS_API_VERSION_MINOR, minorVersion);
+ return false;
+ }
+
+ g_RehldsFuncs = g_RehldsApi->GetFuncs();
+ g_RehldsHookchains = g_RehldsApi->GetHookchains();
+ g_RehldsSvs = g_RehldsApi->GetServerStatic();
+
+ return true;
+}
+
+bool meta_init_rehlds_api()
+{
+ CSysModule* engineModule = Sys_LoadModule(ENGINE_LIB);
+ if (!rehlds_api_init(engineModule)) {
+ return false;
+ }
+
+ return true;
+}
diff --git a/metamod/src/metamod_rehlds_api.h b/metamod/src/meta_rehlds_api.h
similarity index 87%
rename from metamod/src/metamod_rehlds_api.h
rename to metamod/src/meta_rehlds_api.h
index 192cef1..1d480e0 100644
--- a/metamod/src/metamod_rehlds_api.h
+++ b/metamod/src/meta_rehlds_api.h
@@ -1,5 +1,7 @@
#pragma once
+#include "engine_hlds_api.h"
+
extern IRehldsApi* g_RehldsApi;
extern const RehldsFuncs_t* g_RehldsFuncs;
extern IRehldsHookchains* g_RehldsHookchains;
diff --git a/metamod/src/metamod.cpp b/metamod/src/metamod.cpp
index d6d1e7d..aa738c0 100644
--- a/metamod/src/metamod.cpp
+++ b/metamod/src/metamod.cpp
@@ -1,6 +1,6 @@
#include "precompiled.h"
-cvar_t g_meta_version = { "metamod_version", APP_VERSION_STRD, FCVAR_SERVER, 0, nullptr };
+cvar_t g_meta_version = { "metamod_version", APP_VERSION, FCVAR_SERVER, 0, nullptr };
MConfig g_static_config;
MConfig *g_config = &g_static_config;
@@ -44,21 +44,20 @@ void metamod_startup()
Q_snprintf(execFile, sizeof execFile, "%s/%s", g_config->directory(), EXEC_CFG);
META_CONS(" ");
- META_CONS(" Metamod-r version %s Copyright (c) 2016-2017 ReHLDS Team (rebuild of original Metamod by Will Day and Jussi Kivilinna)", APP_VERSION_STRD);
+ META_CONS(" Metamod-r version %s Copyright (c) 2016-2017 ReHLDS Team (rebuild of original Metamod by Will Day and Jussi Kivilinna)", APP_VERSION);
META_CONS(" Metamod-r comes with ABSOLUTELY NO WARRANTY; for details type `meta gpl'.");
META_CONS(" This is free software, and you are welcome to redistribute it");
META_CONS(" under certain conditions; type `meta gpl' for details.");
META_CONS(" ");
- META_CONS("Metamod-r v%s, API (%s)", APP_VERSION_STRD, META_INTERFACE_VERSION);
+ META_CONS("Metamod-r v%s, API (%s)", APP_VERSION, META_INTERFACE_VERSION);
META_CONS("Metamod-r build: " __TIME__ " " __DATE__ "");
META_CONS("Metamod-r from: " APP_COMMIT_URL APP_COMMIT_SHA "");
// Get gamedir, very early on, because it seems we need it all over the
// place here at the start.
if (!meta_init_gamedll()) {
- META_ERROR("Failure to init game DLL; exiting...");
- do_exit(1);
+ Sys_Error("Failure to init game DLL; exiting...");
}
// Register various console commands and cvars.
@@ -201,8 +200,7 @@ void metamod_startup()
g_plugins = new MPluginList(pluginFile);
if (!meta_load_gamedll()) {
- META_ERROR("Failure to load game DLL; exiting...");
- do_exit(1);
+ Sys_Error("Failure to load game DLL; exiting...");
}
if (!g_plugins->load()) {
@@ -212,6 +210,10 @@ void metamod_startup()
meta_init_rehlds_api();
+ if (!g_meta_extdll.init(&g_engine.sys_module)) {
+ Sys_Error("Failure to init extension DLL; exiting...");
+ }
+
// Allow for commands to metamod plugins at startup. Autoexec.cfg is
// read too early, and server.cfg is read too late.
//
@@ -294,7 +296,7 @@ bool get_function_table(const char* ifname, int ifvers_mm, table_t*& table, size
auto pfnGetFuncs = (getfunc_t)g_GameDLL.sys_module.getsym(ifname);
if (pfnGetFuncs) {
- table = (table_t *)Q_calloc(1, table_size);
+ table = (table_t *)calloc(1, table_size);
int ifvers_gamedll = ifvers_mm;
@@ -304,7 +306,7 @@ bool get_function_table(const char* ifname, int ifvers_mm, table_t*& table, size
}
META_ERROR("dll: Failure calling %s in game '%s'", ifname, g_GameDLL.name);
- Q_free(table);
+ free(table);
table = nullptr;
if (ifvers_gamedll != ifvers_mm) {
@@ -336,7 +338,7 @@ bool get_function_table_old(const char* ifname, int ifvers_mm, table_t*& table,
auto pfnGetFuncs = (getfunc_t)g_GameDLL.sys_module.getsym(ifname);
if (pfnGetFuncs) {
- table = (table_t *)Q_calloc(1, table_size);
+ table = (table_t *)calloc(1, table_size);
if (pfnGetFuncs(table, ifvers_mm)) {
META_DEBUG(3, "dll: Game '%s': Found %s", g_GameDLL.name, ifname);
@@ -344,7 +346,7 @@ bool get_function_table_old(const char* ifname, int ifvers_mm, table_t*& table,
}
META_ERROR("dll: Failure calling %s in game '%s'", ifname, g_GameDLL.name);
- Q_free(table);
+ free(table);
table = nullptr;
}
else {
@@ -478,8 +480,7 @@ static void meta_apply_fix_data(std::vector& data)
char* ptr = g_jit.find_callback_pattern(pattern, sizeof pattern);
if (!ptr) {
- META_ERROR("Failed to fix callback retaddr.\n Bye bye...\n");
- do_exit(666);
+ Sys_Error("Failed to fix callback retaddr.\n Bye bye...\n");
}
// FF D1 call ecx
diff --git a/metamod/src/metamod_rehlds_api.cpp b/metamod/src/metamod_rehlds_api.cpp
deleted file mode 100644
index 5847a3d..0000000
--- a/metamod/src/metamod_rehlds_api.cpp
+++ /dev/null
@@ -1,70 +0,0 @@
-#include "precompiled.h"
-
-IRehldsApi* g_RehldsApi;
-const RehldsFuncs_t* g_RehldsFuncs;
-IRehldsHookchains* g_RehldsHookchains;
-IRehldsServerStatic* g_RehldsSvs;
-
-bool rehlds_api_try_init(CSysModule* engineModule, char* failureReason)
-{
- if (!engineModule) {
- META_ERROR("Failed to locate engine module\n");
- return false;
- }
-
- CreateInterfaceFn ifaceFactory = Sys_GetFactory(engineModule);
- if (!ifaceFactory) {
- sprintf(failureReason, "Failed to locate interface factory in engine module\n");
- return false;
- }
-
- int retCode = 0;
- g_RehldsApi = (IRehldsApi*)ifaceFactory(VREHLDS_HLDS_API_VERSION, &retCode);
- if (!g_RehldsApi) {
- sprintf(failureReason, "Failed to locate retrieve rehlds api interface from engine module, return code is %d\n", retCode);
- return false;
- }
-
- int majorVersion = g_RehldsApi->GetMajorVersion();
- int minorVersion = g_RehldsApi->GetMinorVersion();
-
- if (majorVersion != REHLDS_API_VERSION_MAJOR) {
- sprintf(failureReason, "REHLDS Api major version mismatch; expected %d, real %d\n", REHLDS_API_VERSION_MAJOR, majorVersion);
- return false;
- }
-
- if (minorVersion < REHLDS_API_VERSION_MINOR) {
- sprintf(failureReason, "REHLDS Api minor version mismatch; expected at least %d, real %d\n", REHLDS_API_VERSION_MINOR, minorVersion);
- return false;
- }
-
- g_RehldsFuncs = g_RehldsApi->GetFuncs();
- g_RehldsHookchains = g_RehldsApi->GetHookchains();
- g_RehldsSvs = g_RehldsApi->GetServerStatic();
-
- return true;
-}
-
-bool meta_init_rehlds_api()
-{
- char failReason[2048];
-
-#ifdef WIN32
- CSysModule* engineModule = Sys_LoadModule("swds.dll");
- if (!rehlds_api_try_init(engineModule, failReason)) {
- engineModule = Sys_LoadModule("filesystem_stdio.dll");
- if (!rehlds_api_try_init(engineModule, failReason)) {
- META_ERROR("%s", failReason);
- return false;
- }
- }
-#else
- CSysModule* engineModule = Sys_LoadModule("engine_i486.so");
- if (!rehlds_api_try_init(engineModule, failReason)) {
- META_ERROR("%s", failReason);
- return false;
- }
-#endif
-
- return true;
-}
diff --git a/metamod/src/mextdll.cpp b/metamod/src/mextdll.cpp
new file mode 100644
index 0000000..bd6bad3
--- /dev/null
+++ b/metamod/src/mextdll.cpp
@@ -0,0 +1,96 @@
+#include "precompiled.h"
+
+CExtDll g_meta_extdll;
+
+CExtDll::CExtDll()
+ : m_dlls(nullptr), m_count(nullptr), m_hGameDLL(CSysModule::INVALID_HANDLE)
+{
+}
+
+void CExtDll::load()
+{
+ if (g_RehldsFuncs)
+ {
+ if (!g_RehldsFuncs->AddExtDll(m_hGameDLL)) {
+ Sys_Error("Failure to add extension DLL; exiting...\n");
+ }
+
+ return;
+ }
+
+ auto extdll = &m_dlls[(*m_count)++];
+ Q_memset(extdll, 0, sizeof(*extdll));
+ extdll->lDLLHandle = m_hGameDLL;
+}
+
+void CExtDll::unload()
+{
+ if (g_RehldsFuncs) {
+ g_RehldsFuncs->RemoveExtDll(m_hGameDLL);
+ return;
+ }
+
+ for (auto i = 0u; i < *m_count; i++)
+ {
+ if (m_dlls[i].lDLLHandle == m_hGameDLL)
+ {
+ --(*m_count);
+ if (*m_count != i)
+ {
+ Q_memmove(&m_dlls[i], &m_dlls[i + 1], (*m_count - i) * sizeof(m_dlls[0]));
+ i = *m_count;
+ }
+
+ Q_memset(&m_dlls[i], 0, sizeof(m_dlls[0]));
+ return;
+ }
+ }
+}
+
+bool CExtDll::init(CSysModule *module)
+{
+ m_hGameDLL = g_GameDLL.sys_module.gethandle();
+
+ if (g_RehldsFuncs) {
+ return true;
+ }
+
+ m_dlls = (extensiondll_t *)module->getsym("g_rgextdll");
+ m_count = (size_t *)module->getsym("g_iextdllMac");
+
+ if (m_dlls && m_count) {
+ return true;
+ }
+
+ // HACK HACK MORE HACK
+ // HLDS SHIT
+ auto pos = module->find_string_push("SV_SaveGameComment");
+ if (!pos) {
+ return false;
+ }
+
+ const char patterns[2][2][14] = {
+ { "\x56\x33\xF6\x39\x2A\x2A\x2A\x2A\x2A\x7E\x2A\x53\x8B", "\x5B\xC3\x90\x90\xA1\x2A\x2A\x2A\x2A\x53\x56\x57\x33" },
+ { "\x53\x8B\x2A\x2A\x2A\x2A\x2A\x57\xBF\x2A\x2A\x2A\x2A", "\x7E\x2A\x8B\x2A\x2A\x2A\x2A\x2A\xBE\x2A\x2A\x2A\x2A" },
+ };
+
+ for (auto i = 0u; i < ARRAYSIZE(patterns); i++)
+ {
+ auto addr = mem_find_pattern(pos - 33, 20, patterns[0][i], sizeof(patterns[0][i]) - 1);
+ if (!addr) {
+ continue;
+ }
+
+ m_count = *(size_t **)(addr + 5);
+
+ addr = mem_find_pattern(addr, 30, patterns[1][i], sizeof(patterns[1][i]) - 1);
+ if (!addr) {
+ return false;
+ }
+
+ m_dlls = *(extensiondll_t **)(addr + 9);
+ return true;
+ }
+
+ return false;
+}
diff --git a/metamod/src/mextdll.h b/metamod/src/mextdll.h
new file mode 100644
index 0000000..c1b561a
--- /dev/null
+++ b/metamod/src/mextdll.h
@@ -0,0 +1,19 @@
+#pragma once
+
+#include "pr_dlls.h"
+
+class CExtDll
+{
+public:
+ CExtDll();
+ bool init(CSysModule *module);
+ void load();
+ void unload();
+
+private:
+ module_handle_t m_hGameDLL;
+ extensiondll_t *m_dlls;
+ size_t *m_count;
+};
+
+extern CExtDll g_meta_extdll;
diff --git a/metamod/src/mplugin.cpp b/metamod/src/mplugin.cpp
index 4c04335..2a8d776 100644
--- a/metamod/src/mplugin.cpp
+++ b/metamod/src/mplugin.cpp
@@ -629,7 +629,7 @@ template
void free_table(T& table)
{
if (table) {
- Q_free(table);
+ free(table);
table = nullptr;
}
}
@@ -861,7 +861,7 @@ bool get_function_table_from_plugin(const char* pl_desc, int ifvers_mm, getter_t
if (getter) {
if (!table)
- table = (table_t *)Q_calloc(1, table_size);
+ table = (table_t *)calloc(1, table_size);
if (getter(table, &ifvers_pl)) {
META_DEBUG(3, "dll: Plugin '%s': Found %s", pl_desc, getter_name);
return true;
@@ -874,7 +874,7 @@ bool get_function_table_from_plugin(const char* pl_desc, int ifvers_mm, getter_t
else {
META_DEBUG(5, "dll: Plugin '%s': No %s", pl_desc, getter_name);
if (table)
- Q_free(table);
+ free(table);
table = nullptr;
}
@@ -886,7 +886,7 @@ bool get_function_table_from_plugin_old(const char* pl_desc, int ifvers_mm, gett
{
if (getter) {
if (!table)
- table = (table_t *)Q_calloc(1, table_size);
+ table = (table_t *)calloc(1, table_size);
if (getter(table, ifvers_mm)) {
META_DEBUG(3, "dll: Plugin '%s': Found %s", pl_desc, getter_name);
return true;
@@ -897,7 +897,7 @@ bool get_function_table_from_plugin_old(const char* pl_desc, int ifvers_mm, gett
else {
META_DEBUG(5, "dll: Plugin '%s': No %s", pl_desc, getter_name);
if (table)
- Q_free(table);
+ free(table);
table = nullptr;
}
@@ -924,7 +924,7 @@ bool MPlugin::attach(PLUG_LOADTIME now)
// Make copy of gameDLL's function tables for each plugin, so we don't
// risk the plugins screwing with the tables everyone uses.
if (g_GameDLL.funcs.dllapi_table && !m_gamedll_funcs.dllapi_table) {
- m_gamedll_funcs.dllapi_table = (DLL_FUNCTIONS *)Q_malloc(sizeof(DLL_FUNCTIONS));
+ m_gamedll_funcs.dllapi_table = (DLL_FUNCTIONS *)malloc(sizeof(DLL_FUNCTIONS));
if (!m_gamedll_funcs.dllapi_table) {
META_ERROR("dll: Failed attach plugin '%s': Failed malloc() for dllapi_table");
return false;
@@ -932,7 +932,7 @@ bool MPlugin::attach(PLUG_LOADTIME now)
Q_memcpy(m_gamedll_funcs.dllapi_table, g_GameDLL.funcs.dllapi_table, sizeof(DLL_FUNCTIONS));
}
if (g_GameDLL.funcs.newapi_table && !m_gamedll_funcs.newapi_table) {
- m_gamedll_funcs.newapi_table = (NEW_DLL_FUNCTIONS *)Q_malloc(sizeof(NEW_DLL_FUNCTIONS));
+ m_gamedll_funcs.newapi_table = (NEW_DLL_FUNCTIONS *)malloc(sizeof(NEW_DLL_FUNCTIONS));
if (!m_gamedll_funcs.newapi_table) {
META_ERROR("dll: Failed attach plugin '%s': Failed malloc() for newapi_table");
return false;
diff --git a/metamod/src/mplugin.h b/metamod/src/mplugin.h
index 81bae69..f76d74c 100644
--- a/metamod/src/mplugin.h
+++ b/metamod/src/mplugin.h
@@ -2,6 +2,12 @@
#include "utils.h"
+#if defined(_WIN32)
+ constexpr char *PLATFORM_DLEXT = ".dll";
+#else
+ constexpr char *PLATFORM_DLEXT = ".so";
+#endif
+
// Flags to indicate current "load" state of plugin.
// NOTE: order is important, as greater/less comparisons are made.
enum PLUG_STATUS : uint8
diff --git a/metamod/src/mreg.cpp b/metamod/src/mreg.cpp
index b38ecea..0ed792e 100644
--- a/metamod/src/mreg.cpp
+++ b/metamod/src/mreg.cpp
@@ -7,7 +7,7 @@ MRegCmd::MRegCmd(const char* cmd_name, REG_CMD_FN cmd_handler, MPlugin* cmd_plug
MRegCmd::~MRegCmd()
{
- Q_free(m_name);
+ free(m_name);
}
bool MRegCmd::call() const
@@ -157,8 +157,8 @@ MRegCvar::MRegCvar(cvar_t* cv_ptr, MPlugin* cv_plugin) : m_cvar(cv_ptr), m_plugi
MRegCvar::~MRegCvar()
{
- Q_free((void *)m_cvar->name);
- Q_free(m_cvar->string);
+ free((void *)m_cvar->name);
+ free(m_cvar->string);
delete m_cvar;
}
diff --git a/metamod/src/osdep.cpp b/metamod/src/osdep.cpp
deleted file mode 100644
index 47b6e22..0000000
--- a/metamod/src/osdep.cpp
+++ /dev/null
@@ -1,153 +0,0 @@
-#include "precompiled.h"
-
-CSysModule::CSysModule() : m_handle(0), m_base(0), m_size(0)
-{
-}
-
-#ifdef _WIN32
-module_handle_t CSysModule::load(const char* filepath)
-{
- if (!m_handle) {
- m_handle = LoadLibrary(filepath);
-
- MODULEINFO module_info;
- if (GetModuleInformation(GetCurrentProcess(), m_handle, &module_info, sizeof module_info)) {
- m_base = (uintptr_t)module_info.lpBaseOfDll;
- m_size = module_info.SizeOfImage;
- }
- }
-
- return m_handle;
-}
-
-bool CSysModule::unload()
-{
- bool ret = true;
-
- if (m_handle) {
- ret = FreeLibrary(m_handle) != ERROR;
- m_handle = 0;
- m_base = 0;
- m_size = 0;
- }
-
- return ret;
-}
-
-void* CSysModule::getsym(const char* name) const
-{
- return m_handle ? GetProcAddress(m_handle, name) : nullptr;
-}
-#else
-static ElfW(Addr) dlsize(void* base)
-{
- ElfW(Ehdr) *ehdr;
- ElfW(Phdr) *phdr;
- ElfW(Addr) end;
-
- ehdr = (ElfW(Ehdr) *)base;
-
-/* Find the first program header */
- phdr = (ElfW(Phdr)*)((ElfW(Addr))ehdr + ehdr->e_phoff);
-
-/* Find the final PT_LOAD segment's extent */
- for (int i = 0; i < ehdr->e_phnum; ++i)
- if (phdr[i].p_type == PT_LOAD)
- end = phdr[i].p_vaddr + phdr[i].p_memsz;
-
-/* The start (virtual) address is always zero, so just return end.*/
- return end;
-}
-
-module_handle_t CSysModule::load(const char* filepath)
-{
- if (!m_handle) {
- m_handle = dlopen(filepath, RTLD_NOW | RTLD_LOCAL | RTLD_DEEPBIND);
-
- char buf[1024], dummy[1024], path[260];
- sprintf(buf, "/proc/%i/maps", getpid());
-
- FILE* fp = fopen(buf, "r");
-
- while (fgets(buf, sizeof buf, fp)) {
- uintptr_t start, end;
-
- int args = sscanf(buf, "%x-%x %128s %128s %128s %128s %255s", &start, &end, dummy, dummy, dummy, dummy, path);
- if (args != 7) {
- continue;
- }
-
- if (!Q_stricmp(path, filepath)) {
- m_base = start;
- m_size = end - start;
- break;
- }
- }
-
- fclose(fp);
- }
-
- return m_handle;
-}
-
-bool CSysModule::unload()
-{
- bool ret = true;
-
- if (m_handle) {
- ret = dlclose(m_handle) != 0;
- m_handle = 0;
- m_base = 0;
- m_size = 0;
- }
-
- return ret;
-}
-
-void* CSysModule::getsym(const char* name) const
-{
- return m_handle ? dlsym(m_handle, name) : nullptr;
-}
-#endif
-
-module_handle_t CSysModule::gethandle() const
-{
- return m_handle;
-}
-
-bool CSysModule::contain(void* addr) const
-{
- return addr && uintptr_t(addr) > m_base && uintptr_t(addr) < m_base + m_size;
-}
-
-const char* CSysModule::getloaderror()
-{
-#ifdef _WIN32
- return str_GetLastError();
-#else
- return dlerror();
-#endif
-}
-
-#ifdef _WIN32
-// Windows doesn't provide a functon analagous to dlerr() that returns a
-// string describing the error, so we include one here, as exampled at:
-// http://msdn.microsoft.com/library/en-us/debug/errors_0sdh.asp
-// except without FORMAT_MESSAGE_ALLOCATE_BUFFER, since we use a local
-// static buffer.
-static const char* str_GetLastError()
-{
- static char buf[MAX_STRBUF_LEN];
- FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, nullptr, GetLastError(), MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPTSTR)&buf, MAX_STRBUF_LEN - 1, nullptr);
- return buf;
-}
-#endif
-
-const char* str_os_error()
-{
-#ifdef _WIN32
- return str_GetLastError();
-#else
- return strerror(errno);
-#endif
-}
diff --git a/metamod/src/osdep.h b/metamod/src/osdep.h
index bcd15f5..39621ee 100644
--- a/metamod/src/osdep.h
+++ b/metamod/src/osdep.h
@@ -1,52 +1,8 @@
#pragma once
-// String describing platform/DLL-type, for matching lines in plugins.ini.
-#ifdef _WIN32
- #define UNUSED /**/
-
- #define PLATFORM "mswin"
- #define PLATFORM_SPC "win32"
- #define PLATFORM_DLEXT ".dll"
-
- #define likely(x) (x)
- #define unlikely(x) (x)
-#else
- #define UNUSED __attribute__((unused))
-
- #define PLATFORM "linux"
- #define PLATFORM_SPC "lin32"
- #define PLATFORM_DLEXT ".so"
-
- #define likely(x) __builtin_expect(!!(x), 1)
- #define unlikely(x) __builtin_expect(!!(x), 0)
-#endif
-
-#ifdef _WIN32
-typedef HINSTANCE module_handle_t;
-#else
-typedef void* module_handle_t;
-#endif
-
-class CSysModule
-{
-public:
- CSysModule();
- module_handle_t load(const char* filename);
- bool unload();
- void* getsym(const char* name) const;
- module_handle_t gethandle() const;
- bool contain(void* addr) const;
- static const char* getloaderror();
-
-private:
- module_handle_t m_handle;
- uintptr_t m_base;
- uintptr_t m_size;
-};
-
// Windows doesn't have an strtok_r() routine, so we write our own.
#ifdef _WIN32
- #define strtok_r(s, delim, ptrptr) mm_strtok_r(s, delim, ptrptr)
+ #define strtok_r strtok_s
#endif // _WIN32
// Set filename and pathname maximum lengths. Note some windows compilers
@@ -110,8 +66,4 @@ private:
#ifndef S_IWGRP
#define S_IWGRP S_IWUSR
#endif
-
- const char *str_GetLastError();
#endif // _WIN32
-
-const char* str_os_error();
diff --git a/metamod/src/precompiled.h b/metamod/src/precompiled.h
index 88ded88..8087677 100644
--- a/metamod/src/precompiled.h
+++ b/metamod/src/precompiled.h
@@ -18,6 +18,7 @@
#include "osconfig.h"
#include "jitasm.h"
+#include "strtools.h"
#define CreateInterface mm_CreateInterface
@@ -27,6 +28,7 @@
#include
#include "osdep.h"
+#include "sys_module.h"
#include "mdebug.h"
#include "api_info.h"
#include "commands_meta.h"
@@ -38,6 +40,7 @@
#include "game_support.h"
#include "mreg.h"
#include "meta_api.h"
+#include "mextdll.h"
#include "mutil.h"
#include "reg_support.h"
#include "mlist.h"
@@ -47,8 +50,9 @@
#include "sdk_util.h"
#include "enginecallbacks.h"
#include "utils.h"
+#include "mem_utils.h"
#include "callback_jit.h"
-#include "metamod_rehlds_api.h"
+#include "meta_rehlds_api.h"
#undef CreateInterface
#include "linkent.h"
diff --git a/metamod/src/sys_module.cpp b/metamod/src/sys_module.cpp
new file mode 100644
index 0000000..9cc0547
--- /dev/null
+++ b/metamod/src/sys_module.cpp
@@ -0,0 +1,207 @@
+#include "precompiled.h"
+
+const module_handle_t CSysModule::INVALID_HANDLE = (module_handle_t)0;
+
+CSysModule::CSysModule() : m_handle(INVALID_HANDLE), m_base(0), m_size(0), m_free(true)
+{
+}
+
+bool CSysModule::is_opened() const
+{
+ return m_handle != INVALID_HANDLE;
+}
+
+char *CSysModule::find_string_push(const char *string)
+{
+ return mem_find_string_push((char *)getbase(), string, getsize());
+}
+
+char *CSysModule::find_pattern(char *pos, int range, const char *pattern, size_t len)
+{
+ for (auto c = pos + range - len; pos < c; ++pos) {
+ if (mem_compare(pos, pattern, len))
+ return pos;
+ }
+
+ return nullptr;
+}
+
+#ifdef _WIN32
+
+module_handle_t CSysModule::load(void *addr)
+{
+ MEMORY_BASIC_INFORMATION mem;
+ VirtualQuery(addr, &mem, sizeof(mem));
+
+ IMAGE_DOS_HEADER *dos = (IMAGE_DOS_HEADER *)mem.AllocationBase;
+ IMAGE_NT_HEADERS *pe = (IMAGE_NT_HEADERS *)((uintptr_t)dos + (uintptr_t)dos->e_lfanew);
+
+ if (pe->Signature != IMAGE_NT_SIGNATURE)
+ return INVALID_HANDLE;
+
+ m_free = false;
+ m_base = (uintptr_t)mem.AllocationBase;
+ m_size = (size_t)pe->OptionalHeader.SizeOfImage;
+
+ GetModuleHandleEx(GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT | GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS, reinterpret_cast(addr), &m_handle);
+ return m_handle;
+}
+
+module_handle_t CSysModule::load(const char *filepath)
+{
+ if (!m_handle) {
+ m_handle = LoadLibrary(filepath);
+
+ MODULEINFO module_info;
+ if (GetModuleInformation(GetCurrentProcess(), m_handle, &module_info, sizeof(module_info))) {
+ m_base = (uintptr_t)module_info.lpBaseOfDll;
+ m_size = module_info.SizeOfImage;
+ }
+ }
+
+ return m_handle;
+}
+
+bool CSysModule::unload()
+{
+ if (m_handle == INVALID_HANDLE) {
+ return false;
+ }
+
+ bool ret = true;
+ if (m_free) {
+ ret = FreeLibrary(m_handle) != ERROR;
+ }
+
+ m_handle = INVALID_HANDLE;
+ m_base = 0;
+ m_size = 0;
+
+ return ret;
+}
+
+void *CSysModule::getsym(const char *name) const
+{
+ return m_handle ? GetProcAddress(m_handle, name) : nullptr;
+}
+#else
+
+static ElfW(Addr) dlsize(void *base)
+{
+ ElfW(Ehdr) *ehdr;
+ ElfW(Phdr) *phdr;
+ ElfW(Addr) end;
+
+ ehdr = (ElfW(Ehdr) *)base;
+
+ // Find the first program header
+ phdr = (ElfW(Phdr)*)((ElfW(Addr))ehdr + ehdr->e_phoff);
+
+ // Find the final PT_LOAD segment's extent
+ for (int i = 0; i < ehdr->e_phnum; ++i)
+ if (phdr[i].p_type == PT_LOAD)
+ end = phdr[i].p_vaddr + phdr[i].p_memsz;
+
+ // The start (virtual) address is always zero, so just return end.
+ return end;
+}
+
+module_handle_t CSysModule::load(void *addr)
+{
+ Dl_info dlinfo;
+ if ((!dladdr(addr, &dlinfo) && !dlinfo.dli_fbase) || !dlinfo.dli_fname) {
+ return INVALID_HANDLE;
+ }
+
+ m_free = false;
+ m_base = (uintptr_t)dlinfo.dli_fbase;
+ m_size = (size_t)dlsize(dlinfo.dli_fbase);
+
+ m_handle = dlopen(dlinfo.dli_fname, RTLD_NOW | RTLD_NOLOAD);
+}
+
+module_handle_t CSysModule::load(const char *filepath)
+{
+ if (!m_handle) {
+ m_handle = dlopen(filepath, RTLD_NOW | RTLD_LOCAL | RTLD_DEEPBIND);
+
+ char buf[1024], dummy[1024], path[260];
+ sprintf(buf, "/proc/%i/maps", getpid());
+
+ FILE* fp = fopen(buf, "r");
+
+ while (fgets(buf, sizeof buf, fp)) {
+ uintptr_t start, end;
+
+ int args = sscanf(buf, "%x-%x %128s %128s %128s %128s %255s", &start, &end, dummy, dummy, dummy, dummy, path);
+ if (args != 7) {
+ continue;
+ }
+
+ if (!Q_stricmp(path, filepath)) {
+ m_base = start;
+ m_size = end - start;
+ break;
+ }
+ }
+
+ fclose(fp);
+ }
+
+ return m_handle;
+}
+
+bool CSysModule::unload()
+{
+ if (m_handle == INVALID_HANDLE) {
+ return false;
+ }
+
+ bool ret = true;
+ if (m_free) {
+ ret = dlclose(m_handle) != 0;
+ }
+
+ m_handle = INVALID_HANDLE;
+ m_base = 0;
+ m_size = 0;
+
+ return ret;
+}
+
+void* CSysModule::getsym(const char *name) const
+{
+ return m_handle ? dlsym(m_handle, name) : nullptr;
+}
+#endif
+
+module_handle_t CSysModule::gethandle() const
+{
+ return m_handle;
+}
+
+uintptr_t CSysModule::getbase() const
+{
+ return m_base;
+}
+
+size_t CSysModule::getsize() const
+{
+ return m_size;
+}
+
+bool CSysModule::contain(void *addr) const
+{
+ return addr && uintptr_t(addr) > m_base && uintptr_t(addr) < m_base + m_size;
+}
+
+const char *CSysModule::getloaderror()
+{
+#ifdef _WIN32
+ static char buf[1024];
+ FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, nullptr, GetLastError(), MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPTSTR)&buf, sizeof(buf) - 1, nullptr);
+ return buf;
+#else
+ return dlerror();
+#endif
+}
diff --git a/metamod/src/sys_module.h b/metamod/src/sys_module.h
new file mode 100644
index 0000000..bd6a945
--- /dev/null
+++ b/metamod/src/sys_module.h
@@ -0,0 +1,35 @@
+#pragma once
+
+#ifdef _WIN32
+typedef HINSTANCE module_handle_t;
+#else
+typedef void* module_handle_t;
+#endif
+
+class CSysModule
+{
+public:
+ CSysModule();
+
+ module_handle_t load(void *addr);
+ module_handle_t load(const char *filename);
+ bool unload();
+ void *getsym(const char *name) const;
+ module_handle_t gethandle() const;
+ uintptr_t getbase() const;
+ size_t getsize() const;
+ bool contain(void *addr) const;
+ bool is_opened() const;
+
+ char *find_string_push(const char *string);
+ char *find_pattern(char *pos, int range, const char *pattern, size_t len);
+
+ static const char *getloaderror();
+ static const module_handle_t INVALID_HANDLE;
+
+private:
+ module_handle_t m_handle;
+ uintptr_t m_base;
+ size_t m_size;
+ bool m_free; // m_handle should be released
+};
diff --git a/metamod/src/utils.cpp b/metamod/src/utils.cpp
index 42d744c..73621d1 100644
--- a/metamod/src/utils.cpp
+++ b/metamod/src/utils.cpp
@@ -28,104 +28,6 @@ const char* LOCALINFO(char* key)
return ENTITY_KEYVALUE(nullptr, key);
}
-static_allocator::static_allocator(memory_protection protection) : m_protection(protection)
-{
-}
-
-char* static_allocator::allocate(const size_t n)
-{
- if (!m_pages.size() || m_used + n > Pagesize)
- allocate_page();
-
- auto ptr = reinterpret_cast(m_pages.back()) + m_used;
- m_used += n;
- return ptr;
-}
-
-char* static_allocator::strdup(const char* string)
-{
- size_t len = strlen(string) + 1;
- return (char *)memcpy(allocate(len), string, len);
-}
-
-void static_allocator::deallocate_all()
-{
- for (auto page : m_pages)
-#ifdef WIN32
- VirtualFree(page, 0, MEM_RELEASE);
-#else
- munmap(page, Pagesize);
-#endif
-
- m_pages.clear();
-}
-
-size_t static_allocator::memory_used() const
-{
- return (m_pages.size() - 1) * Pagesize + m_used;
-}
-
-bool static_allocator::contain(uint32 addr)
-{
- for (auto p : m_pages) {
- if (uint32(p) <= addr && addr < uint32(p) + Pagesize)
- return true;
- }
- return false;
-}
-
-char* static_allocator::find_pattern(char* pattern, size_t len)
-{
- for (auto p : m_pages) {
- for (char* c = (char *)p, *e = c + Pagesize - len; c < e; c++) {
- if (mem_compare(c, pattern, len))
- return c;
- }
- }
- return nullptr;
-}
-
-void static_allocator::allocate_page()
-{
-#ifdef WIN32
- auto page = VirtualAlloc(nullptr, Pagesize, MEM_COMMIT, PAGE_EXECUTE_READWRITE);
-#else
- auto page = mmap(nullptr, Pagesize, PROT_READ | PROT_WRITE | PROT_EXEC, MAP_ANONYMOUS | MAP_PRIVATE, 0, 0);
-#endif
-
- m_used = 0;
- m_pages.push_back(page);
-}
-
-#ifdef _WIN32
-// Since windows doesn't provide a verison of strtok_r(), we include one
-// here. This may or may not operate exactly like strtok_r(), but does
-// what we need it it do.
-char* mm_strtok_r(char* s, const char* delim, char** ptrptr)
-{
- char* begin = nullptr;
- char* end = nullptr;
- char* rest = nullptr;
- if (s)
- begin = s;
- else
- begin = *ptrptr;
- if (!begin)
- return nullptr;
-
- end = strpbrk(begin, delim);
- if (end) {
- *end = '\0';
- rest = end + 1;
- *ptrptr = rest + strspn(rest, delim);
- }
- else
- *ptrptr = nullptr;
-
- return begin;
-}
-#endif // _WIN32
-
char* trimbuf(char* str)
{
char* ibuf;
@@ -212,12 +114,6 @@ char* realpath(const char* file_name, char* resolved_name)
}
#endif // _WIN32
-void __declspec(noreturn) do_exit(int exitval)
-{
- //Allahu Akbar!!
- *((int *)nullptr) = 0;
-}
-
// Checks for a non-empty file, relative to the gamedir if necessary.
// Formerly used LOAD_FILE_FOR_ME, which provided a simple way to check for
// a file under the gamedir, but which would _also_ look in the sibling
@@ -286,7 +182,7 @@ char* full_gamedir_path(const char* path, char* fullpath)
// Remove relative path components, if possible.
if (!realpath(buf, fullpath)) {
- META_DEBUG(4, "Unable to get realpath for '%s': %s", buf, str_os_error());
+ META_DEBUG(4, "Unable to get realpath for '%s': %s", buf, strerror(errno));
Q_strncpy(fullpath, path, sizeof fullpath - 1);
fullpath[sizeof fullpath - 1] = '\0';
}
@@ -296,16 +192,6 @@ char* full_gamedir_path(const char* path, char* fullpath)
return fullpath;
}
-bool mem_compare(const char* addr, const char* pattern, size_t len)
-{
- for (auto c = pattern, pattern_end = pattern + len; c < pattern_end; ++c, ++addr) {
- if (*c == *addr || *c == '\x2A')
- continue;
- return false;
- }
- return true;
-}
-
void NORETURN Sys_Error(const char *error, ...)
{
va_list argptr;
@@ -316,8 +202,16 @@ void NORETURN Sys_Error(const char *error, ...)
va_end(argptr);
META_CONS("FATAL ERROR (shutting down): %s\n", text);
+ META_ERROR(text);
- int *null = 0;
+#ifdef _WIN32
+ MessageBox(GetForegroundWindow(), text, "Fatal error - Metamod", MB_ICONERROR | MB_OK);
+#endif // _WIN32
+
+ // Allow chance to read the message, before any window closes.
+ sleep(3);
+
+ int *null = nullptr;
*null = 0;
exit(-1);
}
diff --git a/metamod/src/utils.h b/metamod/src/utils.h
index 10cdde4..04c7316 100644
--- a/metamod/src/utils.h
+++ b/metamod/src/utils.h
@@ -16,88 +16,11 @@ template
char(&ArraySizeHelper(T(&array)[N]))[N];
#define arraysize(array) (sizeof(ArraySizeHelper(array)))
-class static_allocator
-{
-public:
- enum memory_protection : uint8
- {
-#ifdef _WIN32
- mp_readwrite = PAGE_READWRITE,
- mp_rwx = PAGE_EXECUTE_READWRITE
-#else
- mp_readwrite = PROT_READ | PROT_WRITE,
- mp_rwx = PROT_READ | PROT_WRITE | PROT_EXEC
-#endif
- };
-
- static_allocator(memory_protection protection);
- char* allocate(const size_t n);
- char* strdup(const char* string);
- void deallocate_all();
- size_t memory_used() const;
- bool contain(uint32 addr);
- char* find_pattern(char* pattern, size_t len);
-
- template
- T* allocate()
- {
- return (T *)allocate(sizeof(T));
- }
-
-private:
- void allocate_page();
-
- enum
- {
- Pagesize = 4096
- };
-
- size_t m_used = 0;
- std::vector m_pages;
- memory_protection m_protection;
-
- friend class CJit;
-};
-
bool is_yes(const char* str);
bool is_no(const char* str);
const char* LOCALINFO(char* key);
-template
-char *strlcpy(char (&dest)[N], const char *src) {
- Q_strncpy(dest, src, N - 1);
- dest[N - 1] = '\0';
- return dest;
-}
-
-inline char *strnlcpy(char *dest, const char *src, size_t n) {
- Q_strncpy(dest, src, n - 1);
- dest[n - 1] = '\0';
- return dest;
-}
-
-template
-size_t strlcat(char (&dest)[N], const char *src)
-{
- size_t dstlen = Q_strlen(dest);
- size_t size = N - dstlen + 1;
-
- if (!size) {
- return dstlen;
- }
-
- size_t srclen = Q_strlen(src);
- if (srclen > size) {
- srclen = size;
- }
-
- Q_memcpy(dest + dstlen, src, srclen);
- dest[dstlen + srclen] = '\0';
-
- return dstlen + srclen;
-}
-
#ifdef _WIN32
char *mm_strtok_r(char *s, const char *delim, char **ptrptr);
char *realpath(const char *file_name, char *resolved_name);
@@ -108,9 +31,6 @@ void normalize_path(char *path);
bool is_abs_path(const char *path);
bool is_valid_path(const char *path);
bool is_platform_postfix(const char *pf);
-
-void __declspec(noreturn) do_exit(int exitval);
-
bool is_file_exists_in_gamedir(const char *path);
char *full_gamedir_path(const char *path, char *fullpath);
bool mem_compare(const char* addr, const char* pattern, size_t len);