"Games"
{
	"#default"
	{
		"Functions"
		{
			"ZombieManager::ReplaceTank"
			{
				"signature"		"ZombieManager::ReplaceTank"
				"callconv"		"thiscall"
				"return"		"int"
				"this"			"ignore"
				"arguments"
				{
					"a1"
					{
						"type"	"cbaseentity"
					}
					"a2"
					{
						"type"	"cbaseentity"
					}
				}
			}
		}
	}
	
	// From left4dhooks thanks to Silvers
	"left4dead"
	{
		"Offsets"
		{
			"m_iTankCount" // Found in "Director::UpdateVersusBossSpawning"
			{
				"linux"			"524"
				"windows"		"528"
			}
		}
		
		"Signatures"
		{
			/*
			 * ZombieManager::ReplaceTank(CTerrorPlayer *, CTerrorPlayer *)
			 *
			 * Search "TANK OFFER: Looking for players" for "Director::CreateTanks".
			 * Called by this function near bottom.
			 */
			"ZombieManager::ReplaceTank"
			{
				"library"		"server"
				"linux"			"@_ZN13ZombieManager11ReplaceTankEP13CTerrorPlayerS1_"
				"windows" 		"\x83\x2A\x2A\x55\x56\x8B\x2A\x2A\x2A\x8B\x2A\x8B\x2A\x2A\x2A\x2A\x2A\x8B\x2A\x57\x8B\x2A\xFF\x2A\x84\x2A\x0F\x84\x2A\x2A\x2A\x2A\x8B\x2A\xE8\x2A\x2A\x2A\x2A\x83\x2A\x03"
				/* 83 ? ? 55 56 8B ? ? ? 8B ? 8B ? ? ? ? ? 8B ? 57 8B ? FF ? 84 ? 0F 84 ? ? ? ? 8B ? E8 ? ? ? ? 83 ? 03 */
			}
		}
	}
	
	"left4dead2"
	{
		"Functions"
		{
			"CDirectorScriptedEventManager::UpdateScriptedTankStage"
			{
				"signature"		"CDirectorScriptedEventManager::UpdateScriptedTankStage"
				"callconv"		"thiscall"
				"return"		"int"
				"this"			"address"
				"arguments"
				{
					"count"
					{
						"type"	"int"
					}
				}
			}
		}
		
		"Offsets"
		{
			"CDirectorScriptedEventManager::m_tankSpawning"
			{
				"linux"			"139"
				"windows"		"139"
			}
			
			// From left4dhooks thanks to Silvers
			"m_iTankCount"
			{
				"linux"			"448"
				"windows"		"448"
			}
		}
		
		"Signatures"
		{
			// Search string "Failed to create tank during custom tank finale phase.\n"
			"CDirectorScriptedEventManager::UpdateScriptedTankStage"
			{
				"library"		"server"
				"linux"			"@_ZN29CDirectorScriptedEventManager23UpdateScriptedTankStageERi"
				"windows"		"\x55\x2A\x2A\x8B\x2A\x2A\x2A\x2A\x2A\x83\x2A\x2A\x2A\x2A\x2A\x0F\x8E"
				/* 55 ? ? 8B ? ? ? ? ? 83 ? ? ? ? ? 0F 8E */
			}
			
			/*
			 * ZombieManager::ReplaceTank(CTerrorPlayer *, CTerrorPlayer *)
			 *
			 * for finding: in CDirector::UpdateTankSpawns, easily findable in graph view from ReplaceWithBot
			 */
			"ZombieManager::ReplaceTank"
			{
				"library"		"server"
				"linux"			"@_ZN13ZombieManager11ReplaceTankEP13CTerrorPlayerS1_"
				"windows"		"\x55\x2A\x2A\x2A\x2A\x2A\x2A\x2A\x8B\x2A\x2A\x8B\x2A\x8B\x2A\x2A\x2A\x2A\x2A\x2A\x8B\x2A\x8B\x2A\xFF"
				/* 55 ? ? ? ? ? ? ? 8B ? ? 8B ? 8B ? ? ? ? ? ? 8B ? 8B ? FF */
			}
		}
	}
}