"Games"
{
	/* Sounds */
	"#default"
	{
		"Keys"
		{
			"SlapSoundCount"	"3"
			"SlapSound1"		"player/pl_fallpain1.wav"
			"SlapSound2"		"player/pl_fallpain3.wav"
			"SlapSound3"		"player/pl_pain5.wav"
			"m_iFrags"			"m_iFrags"
		}
		"Offsets"
		{
			"m_iHealth"
			{
				"class"		"CBasePlayer"
				"prop"		"m_iHealth"
			}
			"m_lifeState"
			{
				"class"		"CBasePlayer"
				"prop"		"m_lifeState"
			}
		}
	}

	/* General Temp Entities */
	"#default"
	{
		"#supported"
		{
			"game"		"cstrike"
			"game"		"hl2mp"
			"game"		"ship"
			"game"		"!Dystopia"
			"game"		"!Insurgency"
			"game"		"pvkii"
			"game"		"!SourceForts v1.9.2"
			"game"		"$SourceForts v1.9.3"
			"game"		"FortressForever"
			"game"		"empires"
			"game"		"synergy"
			"game"		"hidden"
			"game"		"zombie_master"
		}

		"Offsets"
		{
			/* Offset into CBaseTempEntity constructor */
			"s_pTempEntities"
			{
				"windows"	"17"
			}
			"GetTEName"
			{
				"windows"	"4"
				"linux"		"4"
			}
			"GetTENext"
			{
				"windows"	"8"
				"linux"		"8"
			}
			"TE_GetServerClass"
			{
				"windows"	"1"
				"linux"		"1"
			}
		}

		"Signatures"
		{
			"CBaseTempEntity"
			{
				"library"	"server"
				"windows"	"\x8B\xC1\x8B\x4C\x24\x04\xC7\x00\x2A\x2A\x2A\x2A\x89\x48\x04\x8B\x15\x2A\x2A\x2A\x2A\x89\x50\x08\xA3\x2A\x2A\x2A\x2A\xC2\x04\x00"
			}
			"s_pTempEntities"
			{
				"library"	"server"
				"linux"		"@_ZN15CBaseTempEntity15s_pTempEntitiesE"
			}
		}
	}
	
	/* General GameRules */
	"#default"
	{
		"#supported"
		{
			"game"		"cstrike"
			"game"		"garrysmod"
			"game"		"hl2mp"
			"game"		"ship"
			"game"		"!Dystopia"
			"game"		"!Insurgency"
			"game"		"pvkii"
			"game"		"!SourceForts v1.9.2"
			"game"		"$SourceForts v1.9.3"
			"game"		"FortressForever"
			"game"		"empires"
			"game"		"synergy"
			"game"		"hidden"
		}
		
		"Offsets"
		{
			/* Offset into CreateGameRulesObject */
			"g_pGameRules"
			{
				"windows"	"2"
			}
		}
		
		"Signatures"
		{
			/* This signature sometimes has multiple matches, but this
			 * does not matter as g_pGameRules is involved in all of them.
			 * The same g_pGameRules offset applies to each match.
			 *
			 * Sometimes this block of bytes is at the beginning of the static
			 * CreateGameRulesObject function and sometimes it is in the middle
			 * of an entirely different function. This depends on the game.
			 */
			"CreateGameRulesObject"
			{
				"library"	"server"
				"windows"	"\x8B\x0D\x2A\x2A\x2A\x2A\x85\xC9\x74\x2A\x8B\x01\x6A\x01\xFF\x50"
			}
			"g_pGameRules"
			{
				"library"	"server"
				"linux"		"@g_pGameRules"
			}
		}
	}
	
	/* CGlobalEntityList */
	"#default"
	{
		"#supported"
		{
			"game"		"cstrike"
			"game"		"garrysmod"
			"game"		"hl2mp"
			"game"		"ship"
			"game"		"!Insurgency"
			"game"		"pvkii"
			"game"		"!SourceForts v1.9.2"
			"game"		"$SourceForts v1.9.3"
			"game"		"FortressForever"
			"game"		"empires"
			"game"		"synergy"
			"game"		"hidden"
			"game"		"zombie_master"
		}
		
		"Offsets"
		{
			/* Offset into LevelShutdown */
			"gEntList"
			{
				"windows"	"11"
			}
		}
		
		"Signatures"
		{
			"LevelShutdown"
			{
				"library"	"server"
				"windows"	"\xE8\x2A\x2A\x2A\x2A\xE8\x2A\x2A\x2A\x2A\xB9\x2A\x2A\x2A\x2A\xE8\x2A\x2A\x2A\x2A\xE8"
			}
			"gEntList"
			{
				"library"	"server"
				"linux"		"@gEntList"
			}
			
			/* Functions in CGlobalEntityList */
			"FindEntityByClassname"
			{
				"library"	"server"
				"windows"	"\x53\x55\x56\x8B\xF1\x8B\x4C\x24\x2A\x85\xC9\x57\x74\x2A\x8B\x01\xFF\x50\x2A\x8B\x08\x81\xE1\x2A\x2A\x2A\x2A\x83\xC1\x2A\xC1\xE1\x2A\x8B\x3C\x31\xEB\x2A\x8B\xBE\x2A\x2A\x2A\x2A\x85\xFF\x74\x2A\x8B\x5C\x24\x2A\x8B\x2D\x2A\x2A\x2A\x2A\x8D\x9B\x00\x00\x00\x00\x8B\x37\x85\xF6\x75\x2A\x68\x2A\x2A\x2A\x2A\xFF\x2A\x83\xC4\x2A\xEB\x2A\x39"
				"linux"		"@_ZN17CGlobalEntityList21FindEntityByClassnameEP11CBaseEntityPKc"
			}
		}
	}

	/* Create Entity Signatures */
	"#default"
	{
		"#supported"
		{
			"game"		"cstrike"
			"game"		"hl2mp"
			"game"		"!Insurgency"
			"game"		"pvkii"
			"game"		"$SourceForts v1.9.3"
			"game"		"empires"
			"game"		"synergy"
			"game"		"hidden"
			"game"		"FortressForever"
		}

		"Signatures"
		{
			"DispatchSpawn"
			{
				"library"	"server"
				"linux"		"@_Z13DispatchSpawnP11CBaseEntity"
				"windows"	"\x53\x55\x56\x8B\x74\x24\x10\x85\xF6\x57\x0F\x84\x2A\x2A\x2A\x2A\x8B\x1D\x2A\x2A\x2A\x2A\x8B\x03\x8B\xCB\xFF\x50\x60"
			}
			"CreateEntityByName"
			{
				"library"	"server"
				"linux"		"@_Z18CreateEntityByNamePKci"
				"windows"	"\x56\x8B\x74\x24\x0C\x83\xFE\xFF\x57\x8B\x7C\x24\x0C\x74\x25\x8B\x0D\x2A\x2A\x2A\x2A\x8B\x01\x56\xFF\x50\x54\x85\xC0"
			}
		}
	}

	/* IServer interface pointer */
	"#default"
	{
		"Offsets"
		{
			/* Offset into IVEngineServer::CreateFakeClient */
			"sv"
			{
				"windows"	"6"
			}
		}

		"Signatures"
		{
			/* CBaseServer object for IServer interface */
			"sv"
			{
				"library"	"engine"
				"linux"		"@sv"
			}
		}
	}
	
	/* EntityFactoryDictionary function */
	"#default"
	{
		"Signatures"
		{
			"EntityFactory"
			{
				"library"	"server"
				"windows"	"\xB8\x01\x00\x00\x00\x84\x2A\x2A\x2A\x2A\x2A\x75\x1D\x09\x2A\x2A\x2A\x2A\x2A\xB9\x2A\x2A\x2A\x2A\xE8\x2A\x2A\x2A\x2A\x68\x2A\x2A\x2A\x2A\xE8\x2A\x2A\x2A\x2A\x83\xC4\x04\xB8\x2A\x2A\x2A\x2A\xC3"
				"linux"		"@_Z23EntityFactoryDictionaryv"
			}
		}
	}
	/* CBaseEntityOutput::FireOutput */
	"#default"
	{
		"#supported"
		{
			"game"		"cstrike"
			"game"		"hl2mp"
		}
		"Signatures"
		{
			"FireOutput"
			{
				"library"	"server"
				"windows"	"\x81\xEC\x1C\x03\x00\x00\x53\x55\x56\x8B\x71\x14"
				"linux"		"@_ZN17CBaseEntityOutput10FireOutputE9variant_tP11CBaseEntityS2_f"
			}
		}
		"Offsets"
		{
			"FireOutputBackup"
			{
				"windows"	"6"
				"linux"		"6"
			}
		}
	}

	/* SetUserInfo data */
	"#default"
	{
		"Offsets"
		{
			/**
			 * CBaseClient::SetUserCVar(char  const*,char  const*);
			 * Linux offset straight from VTable dump.
			 * Windows offset is crazy. Found the windows 'SetName' function using string "(%d)%-0.*s"
			 * Cross referenced back to the vtable and counted manually (SetUserCvar is 1 higher, offsets start from 1)
			 */
			"SetUserCvar"
			{
				"windows"	"17"
				"linux"		"53"
			}
			/**
			 * Offset into CBaseClient - Used by CBaseServer::UpdateUserSettings to determine when changes have been made.
			 * Find CBaseClient::UpdateUserSettings (strings "net_maxroutable", "cl_updaterate" etc) and the offset is set to 0 near the end.
			 * Linux: 	mov     byte ptr [esi+98h], 0
			 * Win:	mov     byte ptr [esi+0A4h], 0
			 */
			"InfoChanged"
			{
				"windows"	"164"
				"linux"		"152"
			}
		}
	}

	/* Counter-Strike: Source */
	"cstrike"
	{
		"Keys"
		{
			"SlapSoundCount"	"3"
			"SlapSound1"		"player/damage1.wav"
			"SlapSound2"		"player/damage2.wav"
			"SlapSound3"		"player/damage3.wav"
		}

		"Offsets"
		{
			"GiveNamedItem"
			{
				"windows"	"329"
				"linux"		"330"
			}
			"RemovePlayerItem"
			{
				"windows"	"226"
				"linux"		"227"
			}
			"Weapon_GetSlot"
			{
				"windows"	"224"
				"linux"		"225"
			}
			"Ignite"
			{
				"windows"	"188"
				"linux"		"189"
			}
			"Extinguish"
			{
				"windows"	"189"
				"linux"		"190"
			}
			"Teleport"
			{
				"windows"	"98"
				"linux"		"99"
			}
			"CommitSuicide"
			{
				"windows"	"357"
				"linux"		"358"
			}
			"GetVelocity"
			{
				"windows"	"126"
				"linux"		"127"
			}
			"EyeAngles"
			{
				"windows"	"118"
				"linux"		"119"
			}
			"AcceptInput"
			{
				"windows"	"35"
				"linux"		"36"
			}
			"DispatchKeyValue"
			{
				"windows"	"31"
				"linux"		"30"
			}
			"DispatchKeyValueFloat"
			{
				"windows"	"30"
				"linux"		"31"
			}
			"DispatchKeyValueVector"
			{
				"windows"	"29"
				"linux"		"32"
			}
			"SetEntityModel"
			{
				"windows"	"25"
				"linux"		"26"
			}
			"WeaponEquip"
			{
				"windows"	"217"
				"linux"		"218"
			}
			"Activate"
			{
				"windows"	"32"
				"linux"		"33"
			}
		}
	}


	/* Half-Life 2: Deathmatch */
	"hl2mp"
	{
		"Offsets"
		{
			"GiveNamedItem"
			{
				"windows"	"328"
				"linux"		"329"
			}
			"RemovePlayerItem"
			{
				"windows"	"226"
				"linux"		"227"
			}
			"Weapon_GetSlot"
			{
				"windows"	"224"
				"linux"		"225"
			}
			"Ignite"
			{
				"windows"	"188"
				"linux"		"189"
			}
			"Extinguish"
			{
				"windows"	"189"
				"linux"		"190"
			}
			"Teleport"
			{
				"windows"	"98"
				"linux"		"99"
			}
			"CommitSuicide"
			{
				"windows"	"356"
				"linux"		"357"
			}
			"GetVelocity"
			{
				"windows"	"126"
				"linux"		"127"
			}
			"EyeAngles"
			{
				"windows"	"118"
				"linux"		"119"
			}
			"AcceptInput"
			{
				"windows"	"35"
				"linux"		"36"
			}
			"DispatchKeyValue"
			{
				"windows"	"31"
				"linux"		"30"
			}
			"DispatchKeyValueFloat"
			{
				"windows"	"30"
				"linux"		"31"
			}
			"DispatchKeyValueVector"
			{
				"windows"	"29"
				"linux"		"32"
			}
			"SetEntityModel"
			{
				"windows"	"25"
				"linux"		"26"
			}
			"WeaponEquip"
			{
				"windows"	"217"
				"linux"		"218"
			}
			"Activate"
			{
				"windows"	"32"
				"linux"		"33"
			}
		}
	}
	
	/* The Ship */
	"ship"
	{
		"Offsets"
		{
			/* CBasePlayer */
			"GiveNamedItem"
			{
				"windows"	"316"
				"linux"		"317"
			}
			"RemovePlayerItem"
			{
				"windows"	"220"
				"linux"		"221"
			}
			"Weapon_GetSlot"
			{
				"windows"	"218"
				"linux"		"219"
			}
			"Ignite"
			{
				"windows"	"180"
				"linux"		"181"
			}
			"Extinguish"
			{
				"windows"	"181"
				"linux"		"182"
			}
			"Teleport"
			{
				"windows"	"100"
				"linux"		"101"
			}
			"CommitSuicide"
			{
				"windows"	"343"
				"linux"		"344"
			}
			"GetVelocity"
			{
				"windows"	"124"
				"linux"		"125"
			}
			"EyeAngles"
			{
				"windows"	"116"
				"linux"		"117"
			}
			"DispatchKeyValue"
			{
				"windows"	"35"
				"linux"		"34"
			}
			"DispatchKeyValueFloat"
			{
				"windows"	"34"
				"linux"		"35"
			}
			"DispatchKeyValueVector"
			{
				"windows"	"33"
				"linux"		"36"
			}
			"AcceptInput"
			{
				"windows"	"39"
				"linux"		"40"
			}
			"SetEntityModel"
			{
				"windows"	"30"
				"linux"		"31"
			}
			"WeaponEquip"
			{
				"windows"	"211"
				"linux"		"212"
			}
			"Activate"
			{
				"windows"	"37"
				"linux"		"38"
			}
			
			/* Temp Entities */
			"TE_GetServerClass"
			{
				"windows"	"0"
				"linux"		"0"
			}
		}

		"Signatures"
		{
			"DispatchSpawn"
			{
				"library"	"server"
				"linux"		"@_Z13DispatchSpawnP11CBaseEntity"
				"windows"	"\x53\x56\x8B\x74\x24\x0C\x85\xF6\x57\x0F\x84\x2A\x2A\x2A\x2A\x8B\x1D\x2A\x2A\x2A\x2A\x8B\x03\x8B\xCB\xFF\x50\x60\x8B\0x16"
			}
			"CreateEntityByName"
			{
				"library"	"server"
				"linux"		"@_Z18CreateEntityByNamePKci"
				"windows"	"\x56\x8B\x74\x24\x0C\x83\xFE\xFF\x57\x8B\x7C\x24\x0C\x74\x25\x8B\x0D\x2A\x2A\x2A\x2A\x8B\x01\x56\xFF\x50\x54\x85\xC0"
			}
		}
	}
	
	/* Dsytopia */
	"!Dystopia"
	{

		"Offsets"
		{
			/* CBasePlayer */
			"GiveNamedItem"
			{
				"windows"	"331"
				"linux"		"332"
			}
			"RemovePlayerItem"
			{
				"windows"	"229"
				"linux"		"230"
			}
			"Weapon_GetSlot"
			{
				"windows"	"227"
				"linux"		"228"
			}
			"Ignite"
			{
				"windows"	"191"
				"linux"		"192"
			}
			"Extinguish"
			{
				"windows"	"192"
				"linux"		"193"
			}
			"Teleport"
			{
				"windows"	"100"
				"linux"		"101"
			}
			"CommitSuicide"
			{
				"windows"	"360"
				"linux"		"361"
			}
			"GetVelocity"
			{
				"windows"	"128"
				"linux"		"129"
			}
			"EyeAngles"
			{
				"windows"	"120"
				"linux"		"121"
			}
			"AcceptInput"
			{
				"windows"	"35"
				"linux"		"36"
			}
			"DispatchKeyValue"
			{
				"windows"	"31"
				"linux"		"30"
			}
			"DispatchKeyValueFloat"
			{
				"windows"	"30"
				"linux"		"31"
			}
			"DispatchKeyValueVector"
			{
				"windows"	"29"
				"linux"		"32"
			}
			"SetEntityModel"
			{
				"windows"	"25"
				"linux"		"26"
			}
			"WeaponEquip"
			{
				"windows"	"220"
				"linux"		"221"
			}
			"Activate"
			{
				"windows"	"32"
				"linux"		"33"
			}

			/* Offset into CBaseTempEntity constructor.
			 * On Windows Dsytopia is heavily inlined; we use the function 
			 * surrounding "aCouldnTFindTem" in IDA instead.
			 */
			"s_pTempEntities"
			{
				"windows"	"70"
			}
		}

		"Signatures"
		{
			/* On Windows Dsytopia is heavily inlined; we use the function 
			 * surrounding "aCouldnTFindTem" in IDA instead.
			 */
			"CBaseTempEntity"
			{
				"library"	"server"
				"windows"	"\x81\xEC\x84\x00\x00\x00\x56\x8B\xF1\x8B\x46\x6C\x57\x8D\x7E\x6C\x8D\x4C\x24\x08\x83\xC8\x20\x51\x89\x44\x24\x0C\xE8\x2A\x2A\x2A"
			}

			/* Dystopia always has to be different, doesn't it
			 *
			 * This is very similar to the general signature, except that
			 * it does "mov edx, [eax+2Ch]" before making a call rather than
			 * doing "call dword ptr [eax+2Ch]"
			 */
			"CreateGameRulesObject"
			{
				"library"	"server"
				"windows"	"\x8B\x0D\x2A\x2A\x2A\x2A\x85\xC9\x74\x2A\x8B\x01\x8B\x50\x2A\x6A\x01\xFF\xD2"
			}
		}
	}

	/* Insurgency Generic */
	"!Insurgency"
	{
		"Offsets"
		{
			/* CBasePlayer */
			"Ignite"
			{
				"windows"	"174"
				"linux"		"175"
			}
			"Extinguish"
			{
				"windows"	"175"
				"linux"		"176"
			}
			"Teleport"
			{
				"windows"	"90"
				"linux"		"91"
			}
			"GetVelocity"
			{
				"windows"	"115"
				"linux"		"116"
			}
			"EyeAngles"
			{
				"windows"	"107"
				"linux"		"108"
			}
			"AcceptInput"
			{
				"windows"	"34"
				"linux"		"35"
			}
			"DispatchKeyValue"
			{
				"windows"	"30"
				"linux"		"29"
			}
			"DispatchKeyValueFloat"
			{
				"windows"	"29"
				"linux"		"30"
			}
			"DispatchKeyValueVector"
			{
				"windows"	"28"
				"linux"		"31"
			}
			"SetEntityModel"
			{
				"windows"	"24"
				"linux"		"25"
			}
			"WeaponEquip"
			{
				"windows"	"215"
				"linux"		"216"
			}
			"Activate"
			{
				"windows"	"31"
				"linux"		"32"
			}
		}
	}

	/* Pirates, Vikings and Knights II */
	"pvkii"
	{
		"Offsets"
		{
			/* CBasePlayer */
			"GiveNamedItem"
			{
				"windows"	"328"
				"linux"		"329"
			}
			"RemovePlayerItem"
			{
				"windows"	"226"
				"linux"		"227"
			}
			"Weapon_GetSlot"
			{
				"windows"	"224"
				"linux"		"225"
			}
			"Ignite"
			{
				"windows"	"188"
				"linux"		"189"
			}
			"Extinguish"
			{
				"windows"	"189"
				"linux"		"190"
			}
			"Teleport"
			{
				"windows"	"98"
				"linux"		"99"
			}
			"CommitSuicide"
			{
				"windows"	"356"
				"linux"		"357"
			}
			"GetVelocity"
			{
				"windows"	"126"
				"linux"		"127"
			}
			"EyeAngles"
			{
				"windows"	"118"
				"linux"		"119"
			}
			"AcceptInput"
			{
				"windows"	"35"
				"linux"		"36"
			}
			"DispatchKeyValue"
			{
				"windows"	"31"
				"linux"		"30"
			}
			"DispatchKeyValueFloat"
			{
				"windows"	"30"
				"linux"		"31"
			}
			"DispatchKeyValueVector"
			{
				"windows"	"29"
				"linux"		"32"
			}
			"SetEntityModel"
			{
				"windows"	"25"
				"linux"		"26"
			}
			"WeaponEquip"
			{
				"windows"	"217"
				"linux"		"218"
			}
			"Activate"
			{
				"windows"	"32"
				"linux"		"33"
			}
		}
	}

	/* SourceForts 1.9.2 */
	"!SourceForts v1.9.2"
	{
		"Offsets"
		{
			/* CBasePlayer */
			"GiveNamedItem"
			{
				"windows"	"294"
				"linux"		"295"
			}
			"RemovePlayerItem"
			{
				"windows"	"207"
				"linux"		"208"
			}
			"Weapon_GetSlot"
			{
				"windows"	"205"
				"linux"		"206"
			}
			"Ignite"
			{
				"windows"	"170"
				"linux"		"171"
			}
			"Extinguish"
			{
				"windows"	"171"
				"linux"		"172"
			}
			"Teleport"
			{
				"windows"	"90"
				"linux"		"91"
			}
			"GetVelocity"
			{
				"windows"	"114"
				"linux"		"115"
			}
			"EyeAngles"
			{
				"windows"	"106"
				"linux"		"107"
			}
			"DispatchKeyValue"
			{
				"windows"	"30"
				"linux"		"29"
			}
			"DispatchKeyValueFloat"
			{
				"windows"	"29"
				"linux"		"30"
			}
			"DispatchKeyValueVector"
			{
				"windows"	"28"
				"linux"		"31"
			}
			"AcceptInput"
			{
				"windows"	"34"
				"linux"		"35"
			}
			"SetEntityModel"
			{
				"windows"	"25"
				"linux"		"26"
			}
			
			"TE_GetServerClass"
			{
				"windows"	"0"
				"linux"		"0"
			}
		}

		"Signatures"
		{
			"DispatchSpawn"
			{
				"library"	"server"
				"linux"		"@_Z13DispatchSpawnP11CBaseEntity"
				"windows"	"\x53\x56\x8B\x74\x24\x0C\x85\xF6\x57\x0F\x84\x2A\x2A\x2A\x2A\x8B\x1D\x2A\x2A\x2A\x2A\x8B\x03\x8B\xCB\xFF\x50\x14\x8B\x16\x8B\xCE"
			}
			"CreateEntityByName"
			{
				"library"	"server"
				"linux"		"@_Z18CreateEntityByNamePKci"
				"windows"	"\x56\x8B\x74\x24\x0C\x83\xFE\xFF\x57\x8B\x7C\x24\x0C\x74\x25\x8B\x0D\x2A\x2A\x2A\x2A\x8B\x01\x56\xFF\x50\x54\x85\xC0"
			}
		}
	}
	
	/* Fortress Forever */
	"FortressForever"
	{	
		"Offsets"
		{
			"GiveNamedItem"
			{
				"windows"	"338"
				"linux"		"339"
			}
			"RemovePlayerItem"
			{
				"windows"	"236"
				"linux"		"237"
			}
			"Weapon_GetSlot"
			{
				"windows"	"234"
				"linux"		"235"
			}
			"Ignite"
			{
				"windows"	"198"
				"linux"		"199"
			}
			"Extinguish"
			{
				"windows"	"199"
				"linux"		"200"
			}
			"Teleport"
			{
				"windows"	"104"
				"linux"		"105"
			}
			"CommitSuicide"
			{
				"windows"	"366"
				"linux"		"367"
			}
			"GetVelocity"
			{
				"windows"	"136"
				"linux"		"137"
			}
			"EyeAngles"
			{
				"windows"	"128"
				"linux"		"129"
			}
			"AcceptInput"
			{
				"windows"	"39"
				"linux"		"40"
			}
			"DispatchKeyValue"
			{
				"windows"	"35"
				"linux"		"34"
			}
			"DispatchKeyValueFloat"
			{
				"windows"	"34"
				"linux"		"35"
			}
			"DispatchKeyValueVector"
			{
				"windows"	"33"
				"linux"		"36"
			}
			"SetEntityModel"
			{
				"windows"	"27"
				"linux"		"28"
			}
			"WeaponEquip"
			{
				"windows"	"227"
				"linux"		"228"
			}
			"Activate"
			{
				"windows"	"36"
				"linux"		"37"
			}
		}
		
		"Signatures"
		{
			"CreateGameRulesObject"
			{
				"library"	"server"
				"windows"	"8B\x0D\x2A\x2A\x2A\x2A\x85\xC9\x74\x09\x8B\x01\x8B\x50\x2C\x6A\x01"
			}
			"FindEntityByClassname"
			{
				"library"	"server"
				"windows"	"\x53\x55\x56\x8B\xF1\x8B\x4C\x24\x10\x85\xC9\x57\x74\x19\x8B\x01\x8B\x50\x08\xFF\xD2\x8B\x00\x25\xFF\x0F\x00\x00\x83\xC0\x01\xC1\xE0\x04\x8B\x3C\x30\xEB\x06\x8B\xBE\x04\x00\x01\x00\x85\xFF\x74\x39\x8B\x5C\x24\x18\x8B\x2D\x2A\x2A\x2A\x2A\xEB\x03"
			}
			"DispatchSpawn"
			{
				"library"	"server"
				"windows"	"\x53\x55\x56\x8B\x74\x24\x10\x85\xF6\x57\x0F\x84\x2A\x2A\x2A\x2A\x8B\x1D\x2A\x2A\x2A\x2A\x8B\x03\x8B\x50\x60\x8B\xCB"
			}
			"CreateEntityByName"
			{
				"library"	"server"
				"windows"	"\x56\x8B\x74\x24\x0C\x83\xFE\xFF\x57\x8B\x7C\x24\x0C\x74\x27\x8B\x0D\x2A\x2A\x2A\x2A\x8B\x01\x8B\x50\x54\x56\xFF\xD2"
			}
		}
	}

	/* Garry's Mod 10 - Windows only
	 * This mod is not officially supported, and the definitions are 
	 * for Garry's Mod pre-Orange Box.  
	 * (credits: Damaged Soul)
	 */
	"garrysmod"
	{
		"Offsets"
		{
			"GiveNamedItem"
			{
				"windows"	"366"
			}
			"RemovePlayerItem"
			{
				"windows"	"264"
			}
			"Weapon_GetSlot"
			{
				"windows"	"262"
			}
			"Ignite"
			{
				"windows"	"220"
			}
			"Extinguish"
			{
				"windows"	"221"
			}
			"Teleport"
			{
				"windows"	"99"
			}
			"CommitSuicide"
			{
				"windows"	"394"
			}
			"GetVelocity"
			{
				"windows"	"127"
			}
			"EyeAngles"
			{
				"windows"	"119"
			}
			"AcceptInput"
			{
				"windows"	"35"
			}
			"DispatchKeyValue"
			{
				"windows"	"31"
			}
			"DispatchKeyValueFloat"
			{
				"windows"	"30"
			}
			"DispatchKeyValueVector"
			{
				"windows"	"29"
			}
		}
	}

	/* Empires 2 */
	"empires"
	{

		"Offsets"
		{
			"GiveNamedItem"
			{
				"windows"	"332"
				"linux"		"333"
			}
			"RemovePlayerItem"
			{
				"windows"	"230"
				"linux"		"231"
			}
			"Weapon_GetSlot"
			{
				"windows"	"228"
				"linux"		"229"
			}
			"Ignite"
			{
				"windows"	"192"
				"linux"		"193"
			}
			"Extinguish"
			{
				"windows"	"193"
				"linux"		"194"
			}
			"Teleport"
			{
				"windows"	"102"
				"linux"		"103"
			}
			"CommitSuicide"
			{
				"windows"	"360"
				"linux"		"361"
			}
			"GetVelocity"
			{
				"windows"	"130"
				"linux"		"131"
			}
			"EyeAngles"
			{
				"windows"	"122"
				"linux"		"123"
			}
			"AcceptInput"
			{
				"windows"	"36"
				"linux"		"37"
			}
			"DispatchKeyValue"
			{
				"windows"	"31"
				"linux"		"30"
			}
			"DispatchKeyValueFloat"
			{
				"windows"	"30"
				"linux"		"31"
			}
			"DispatchKeyValueVector"
			{
				"windows"	"29"
				"linux"		"32"
			}
			"SetEntityModel"
			{
				"windows"	"25"
				"linux"		"26"
			}
			"WeaponEquip"
			{
				"windows"	"221"
				"linux"		"222"
			}
			"Activate"
			{
				"windows"	"32"
				"linux"		"33"
			}

			/* Offset into LevelShutdown for CGlobalEntList */
			"gEntList"
			{
				"windows"	"64"
			}
		}
		
		"Signatures"
		{
			"LevelShutdown"
			{
				"library"	"server"
				"windows"	"\x8B\x0D\x2A\x2A\x2A\x2A\x85\xC9\x74\x2B\x56\xE8\x2A\x2A\x2A\x2A\x8B\x0D\x2A\x2A\x2A\x2A\x85\xC9\x8B\xF1\x74\x0E"
			}
		}
	}

	/* SourceForts 1.9.3 */
	"$SourceForts v1.9.3"
	{
		"Offsets"
		{
			/* CBasePlayer */
			"GiveNamedItem"
			{
				"windows"	"328"
				"linux"		"329"
			}
			"RemovePlayerItem"
			{
				"windows"	"226"
				"linux"		"227"
			}
			"Weapon_GetSlot"
			{
				"windows"	"224"
				"linux"		"225"
			}
			"Ignite"
			{
				"windows"	"188"
				"linux"		"189"
			}
			"Extinguish"
			{
				"windows"	"189"
				"linux"		"190"
			}
			"Teleport"
			{
				"windows"	"98"
				"linux"		"99"
			}
			"CommitSuicide"
			{
				"windows"	"356"
				"linux"		"357"
			}
			"GetVelocity"
			{
				"windows"	"126"
				"linux"		"127"
			}
			"EyeAngles"
			{
				"windows"	"118"
				"linux"		"119"
			}
			"DispatchKeyValue"
			{
				"windows"	"31"
				"linux"		"30"
			}
			"DispatchKeyValueFloat"
			{
				"windows"	"30"
				"linux"		"31"
			}
			"DispatchKeyValueVector"
			{
				"windows"	"29"
				"linux"		"32"
			}
			"AcceptInput"
			{
				"windows"	"35"
				"linux"		"36"
			}
			"SetEntityModel"
			{
				"windows"	"25"
				"linux"		"26"
			}
			"WeaponEquip"
			{
				"windows"	"217"
				"linux"		"218"
			}
			"Activate"
			{
				"windows"	"32"
				"linux"		"33"
			}
		}
	}

	/* Synergy Release 1 */
	"synergy"
	{
		"Offsets"
		{
			/* CBasePlayer */
			"GiveNamedItem"
			{
				"windows"	"334"
				"linux"		"335"
			}
			"RemovePlayerItem"
			{
				"windows"	"226"
				"linux"		"227"
			}
			"Weapon_GetSlot"
			{
				"windows"	"224"
				"linux"		"225"
			}
			"Ignite"
			{
				"windows"	"188"
				"linux"		"189"
			}
			"Extinguish"
			{
				"windows"	"189"
				"linux"		"190"
			}
			"Teleport"
			{
				"windows"	"98"
				"linux"		"99"
			}
			"CommitSuicide"
			{
				"windows"	"362"
				"linux"		"363"
			}
			"GetVelocity"
			{
				"windows"	"126"
				"linux"		"127"
			}
			"EyeAngles"
			{
				"windows"	"118"
				"linux"		"119"
			}
			"DispatchKeyValue"
			{
				"windows"	"31"
				"linux"		"30"
			}
			"DispatchKeyValueFloat"
			{
				"windows"	"30"
				"linux"		"31"
			}
			"DispatchKeyValueVector"
			{
				"windows"	"29"
				"linux"		"32"
			}
			"AcceptInput"
			{
				"windows"	"35"
				"linux"		"36"
			}
			"SetEntityModel"
			{
				"windows"	"25"
				"linux"		"26"
			}
			"WeaponEquip"
			{
				"windows"	"217"
				"linux"		"218"
			}
			"Activate"
			{
				"windows"	"32"
				"linux"		"33"
			}
		}
	}
	
	/* Hidden:Source Beta 4b */
	"hidden"
	{
		"Offsets"
		{
			/* CBasePlayer */
			"GiveNamedItem"
			{
				"windows"	"348"
				"linux"		"349"
			}
			"RemovePlayerItem"
			{
				"windows"	"207"
				"linux"		"208"
			}
			"Weapon_GetSlot"
			{
				"windows"	"205"
				"linux"		"206"
			}
			"Ignite"
			{
				"windows"	"170"
				"linux"		"171"
			}
			"Extinguish"
			{
				"windows"	"171"
				"linux"		"172"
			}
			"Teleport"
			{
				"windows"	"90"
				"linux"		"91"
			}
			"GetVelocity"
			{
				"windows"	"114"
				"linux"		"115"
			}
			"EyeAngles"
			{
				"windows"	"106"
				"linux"		"107"
			}
			"DispatchKeyValue"
			{
				"windows"	"30"
				"linux"		"29"
			}
			"DispatchKeyValueFloat"
			{
				"windows"	"29"
				"linux"		"30"
			}
			"DispatchKeyValueVector"
			{
				"windows"	"28"
				"linux"		"31"
			}
			"AcceptInput"
			{
				"windows"	"34"
				"linux"		"35"
			}
			"SetEntityModel"
			{
				"windows"	"25"
				"linux"		"26"
			}
			"Activate"
			{
				"windows"	"32"
				"linux"		"33"
			}
			"TE_GetServerClass"
			{
				"windows"	"0"
				"linux"		"0"
			}
			"WeaponEquip"
			{
				"windows"	"198"
				"linux"		"199"
			}
		}
		
		"Signatures"
		{
			"DispatchSpawn"
			{
				"library"	"server"
				"linux"		"@_Z13DispatchSpawnP11CBaseEntity"
				"windows"	"\x53\x56\x8B\x74\x24\x0C\x85\xF6\x57\x0F\x84\x2A\x2A\x2A\x2A\x8B\x1D\x2A\x2A\x2A\x2A\x8B\x03\x8B\xCB\xFF\x50\x14"
			}
		}
	}

	/* Zombie Master 1.1.3 */
	"zombie_master"
	{
		"Offsets"
		{
			/* CBasePlayer */
			"GiveNamedItem"
			{
				"windows"	"329"
				"linux"		"330"
			}
			"RemovePlayerItem"
			{
				"windows"	"226"
				"linux"		"227"
			}
			"Weapon_GetSlot"
			{
				"windows"	"224"
				"linux"		"225"
			}
			"Ignite"
			{
				"windows"	"188"
				"linux"		"189"
			}
			"Extinguish"
			{
				"windows"	"189"
				"linux"		"190"
			}
			"Teleport"
			{
				"windows"	"98"
				"linux"		"99"
			}
			"CommitSuicide"
			{
				"windows"	"357"
				"linux"		"358"
			}
			"GetVelocity"
			{
				"windows"	"126"
				"linux"		"127"
			}
			"EyeAngles"
			{
				"windows"	"118"
				"linux"		"119"
			}
			"DispatchKeyValue"
			{
				"windows"	"31"
				"linux"		"30"
			}
			"DispatchKeyValueFloat"
			{
				"windows"	"30"
				"linux"		"31"
			}
			"DispatchKeyValueVector"
			{
				"windows"	"29"
				"linux"		"32"
			}
			"AcceptInput"
			{
				"windows"	"35"
				"linux"		"36"
			}
			"SetEntityModel"
			{
				"windows"	"25"
				"linux"		"26"
			}
			"s_pTempEntities"
			{
				"windows"	"30"
			}
			"g_pGameRules"
			{
				"windows"	"7"
			}
			"WeaponEquip"
			{
				"windows"	"198"
				"linux"		"199"
			}
			"Activate"
			{
				"windows"	"32"
				"linux"		"33"
			}
		}

		"Signatures"
		{
			"CBaseTempEntity"
			{
				"library"	"server"
				"windows"	"\x55\x8B\xEC\x51\x89\x4D\xFC\x8B\x45\xFC\xC7\x00\x2A\x2A\x2A\x2A\x8B\x4D\xFC\x8B\x55\x08\x89\x51\x04\x8B\x45\xFC\x8B\x0D\x2A\x2A"
			}
			"DispatchSpawn"
			{
				"library"	"server"
				"linux"		"@_Z13DispatchSpawnP11CBaseEntity"
				"windows"	"\x55\x8B\xEC\x83\xEC\x20\x83\x7D\x08\x00\x0F\x84\x95\x01\x00\x00\xA1\x2A\x2A\x2A\x2A\x50\x8D\x4D\xF0\xE8\x2A\x2A\x2A\x2A\x8D\x4D"
			}
			"CreateEntityByName"
			{
				"library"	"server"
				"linux"		"@_Z18CreateEntityByNamePKci"
				"windows"	"\x55\x8B\xEC\x83\xEC\x0C\x83\x7D\x0C\xFF\x74\x39\x8B\x45\x0C\x50\x8B\x0D\x2A\x2A\x2A\x2A\x8B\x11\x8B\x0D\x2A\x2A\x2A\x2A\xFF\x52"
			}
			"FindEntityByClassname"
			{
				"library"	"server"
				"windows"	"\x55\x8B\xEC\x83\xEC\x10\x89\x4D\xF4\x83\x7D\x08\x00\x74\x1C\x8B\x45\x08\x8B\x10\x8B\x4D\x08\xFF\x52\x08\x50\x8B\x4D\xF4\xE8\x2A\x2A\x2A\x2A\x8B\x40\x0C\x89\x45\x\xF0\xEB\x0B\x8B\x4D\xF4\xE8\x2A\x2A\x2A\x2A\x89\x45\xF0\x8B\x4D\xF0\x89\x4D\xFC\xEB\x09\x8B\x55\xFC\x8B\x42\x0C\x89\x45\xFC\x83\x7D\xFC\x00\x74\x38\x8B\x4D\xFC\x8B\x11\x89"
				"linux"		"@_ZN17CGlobalEntityList21FindEntityByClassnameEP11CBaseEntityPKc"
			}
			"CreateGameRulesObject"
			{
				"library"	"server"
				"windows"	"\x55\x8B\xEC\x83\xEC\x10\xA1\x2A\x2A\x2A\x2A\x89\x45\xF4\x8B\x4D\xF4\x89\x4D\xF8\x83\x7D\xF8\x00"
			}
			"g_pGameRules"
			{
				"library"	"server"
				"linux"		"@g_pGameRules"
			}
		}
	}
	
	/* Zombie Panic! Source 1.2b 
	 * Note: This mod is not fully supported yet. 
	 * The definitions below were supplied by a third party.
	 * (thanks "noob cannon lol")
	 */
	"$Zombie Panic! Source"
	{
		"Offsets"
		{
			"GiveNamedItem"
			{
				"windows"	"333"
				"linux"		"334"
			}
			"RemovePlayerItem"
			{
				"windows"	"230"
				"linux"		"231"
			}
			"Weapon_GetSlot"
			{
				"windows"	"226"
				"linux"		"227"
			}
			"Ignite"
			{
				"windows"	"190"
				"linux"		"191"
			}
			"Extinguish"
			{
				"windows"	"191"
				"linux"		"192"
			}
			"Teleport"
			{
				"windows"	"100"
				"linux"		"101"
			}
			"CommitSuicide"
			{
				"windows"	"361"
				"linux"		"362"
			}
			"GetVelocity"
			{
				"windows"	"128"
				"linux"		"129"
			}
			"EyeAngles"
			{
				"windows"	"120"
				"linux"		"121"
			}
			"AcceptInput"
			{
				"windows"	"35"
				"linux"		"36"
			}
			"DispatchKeyValue"
			{
				"windows"	"31"
				"linux"		"30"
			}
			"DispatchKeyValueFloat"
			{
				"windows"	"30"
				"linux"		"31"
			}
			"DispatchKeyValueVector"
			{
				"windows"	"29"
				"linux"		"32"
			}
			"SetEntityModel"
			{
				"windows"	"25"
				"linux"		"26"
			}
			"WeaponEquip"
			{
				"windows"	"219"
				"linux"		"220"
			}
			"Activate"
			{
				"windows"	"32"
				"linux"		"33"
			}
		}
		"Signatures"
		{
			"CreateGameRulesObject"
			{
				"library"	"server"
				"windows"	"\x8B\x0D\x2A\x2A\x2A\x2A\x85\xC9\x74\x2A\x8B\x01\x8B\x50\x2C\x6A\x01"
			}
			"FindEntityByClassname"
			{
				"library"	"server"
				"windows"	"\x53\x55\x56\x8B\xF1\x8B\x4C\x24\x2A\x2A\x85\xC9\x74\x2A\x8B\x01\x8B\x50\x2A\x2A\x2A\x8B\x00\x25\xFF\x0F\x00\x00\x40\xC1\xC1\xE0\x04\x8B\x2A\x2A\xEB\x2A\x8B\xBE\x2A\x2A\x2A\x2A\x85\xFF\x74\x2A\x8B\x5C\x24\x2A\x8B\x2D\x2A\x2A\x2A\x2A\x8D\xA4\x24\x00\x00\x00\x00\x8B\x37\x85\xF6\x75\x2A\x68\x2A\x2A\x2A\x2A\xFF\x2A\x83\xC4\x2A\xEB\x2A\x39"								
				"linux"		"@_ZN17CGlobalEntityList21FindEntityByClassnameEP11CBaseEntityPKc"
			}
			"CreateEntityByName"
			{
				"library"	"server"
				"linux"		"@_Z18CreateEntityByNamePKci"
				"windows"	"\x56\x8B\x74\x24\x2A\x57\x8B\x7C\x24\x2A\x83\xFE\xFF\x74\x2A\x8B\x0D\x2A\x2A\x2A\x2A\x8B\x01\x8B\x50\x2A\x56\xFF\xD2"
			}
			"DispatchSpawn"
			{
				"library"	"server"
				"linux"		"@_Z13DispatchSpawnP11CBaseEntity"
				"windows"	"\x53\x55\x56\x8B\x74\x24\x10\x2A\x85\xF6\x0F\x84\x2A\x2A\x2A\x2A\x8B\x1D\x2A\x2A\x2A\x2A\x8B\x03\x8B\x50\x60\x8B\xCB"
			} 
		}
	}
}

