//========= Copyright Valve Corporation, All rights reserved. ============// // // Purpose: // //=============================================================================// #include "cbase.h" #include "tfc_shareddefs.h" const char *g_AmmoTypeNames[] = { "DUMMY AMMO", TFC_AMMO_SHELLS_NAME, TFC_AMMO_NAILS_NAME, TFC_AMMO_ROCKETS_NAME, TFC_AMMO_CELLS_NAME, TFC_AMMO_MEDIKIT_NAME, TFC_AMMO_DETPACK_NAME, TFC_AMMO_GRENADES1_NAME, TFC_AMMO_GRENADES2_NAME }; int g_nMaxGrenades[NUM_GRENADE_TYPES] = { 0, // GR_TYPE_NONE 4, // GR_TYPE_NORMAL 3, // GR_TYPE_CONCUSSION 2, // GR_TYPE_NAIL 2, // GR_TYPE_MIRV 2, // GR_TYPE_NAPALM 2, // GR_TYPE_GAS 4, // GR_TYPE_EMP 3, // GR_TYPE_CALTROP }; CTFCPlayerClassInfo g_TFCPlayerClassInfo[PC_LASTCLASS]; // Note: this could go in a script, but it's not much trouble to have it all here. class CClassInfoInitializer { public: CClassInfoInitializer() { memset( &g_TFCPlayerClassInfo, 0xFE, sizeof( g_TFCPlayerClassInfo ) ); // PC_UNDEFINED. CTFCPlayerClassInfo *pInfo = &g_TFCPlayerClassInfo[PC_UNDEFINED]; pInfo->m_pClassName = "undefined"; pInfo->m_pModelName = "models/player/civilian.mdl"; pInfo->m_flMaxSpeed = 1; memset( pInfo->m_MaxAmmo, 0, sizeof( pInfo->m_MaxAmmo ) ); // PC_SCOUT. pInfo = &g_TFCPlayerClassInfo[PC_SCOUT]; pInfo->m_pClassName = "scout"; pInfo->m_pModelName = "models/player/scout.mdl"; pInfo->m_flMaxSpeed = 400; pInfo->m_iMaxHealth = 75; pInfo->m_iInitArmor = 25; pInfo->m_iMaxArmor = 50; pInfo->m_flInitArmorType = 0.3; pInfo->m_flMaxArmorType = 0.3; pInfo->m_nArmorClasses = 3; pInfo->m_iInitArmorClass = 0; pInfo->m_iGrenadeType1 = GR_TYPE_CALTROP; pInfo->m_iGrenadeType2 = GR_TYPE_CONCUSSION; pInfo->m_InitAmmo[TFC_AMMO_SHELLS] = 25; pInfo->m_InitAmmo[TFC_AMMO_NAILS] = 100; pInfo->m_InitAmmo[TFC_AMMO_ROCKETS] = 0; pInfo->m_InitAmmo[TFC_AMMO_CELLS] = 50; pInfo->m_InitAmmo[TFC_AMMO_MEDIKIT] = 0; pInfo->m_InitAmmo[TFC_AMMO_DETPACK] = 0; pInfo->m_InitAmmo[TFC_AMMO_GRENADES1] = 2; pInfo->m_InitAmmo[TFC_AMMO_GRENADES2] = 3; pInfo->m_MaxAmmo[TFC_AMMO_SHELLS] = 50; pInfo->m_MaxAmmo[TFC_AMMO_NAILS] = 200; pInfo->m_MaxAmmo[TFC_AMMO_ROCKETS] = 25; pInfo->m_MaxAmmo[TFC_AMMO_CELLS] = 100; pInfo->m_MaxAmmo[TFC_AMMO_MEDIKIT] = 0; pInfo->m_MaxAmmo[TFC_AMMO_DETPACK] = 0; pInfo->m_MaxAmmo[TFC_AMMO_GRENADES1] = 4; pInfo->m_MaxAmmo[TFC_AMMO_GRENADES2] = 4; // PC_SNIPER. pInfo = &g_TFCPlayerClassInfo[PC_SNIPER]; pInfo->m_pClassName = "sniper"; pInfo->m_pModelName = "models/player/sniper.mdl"; pInfo->m_flMaxSpeed = 300; pInfo->m_iMaxHealth = 90; pInfo->m_iInitArmor = 25; pInfo->m_iMaxArmor = 50; pInfo->m_flInitArmorType = 0.3; pInfo->m_flMaxArmorType = 0.3; pInfo->m_nArmorClasses = 3; pInfo->m_iInitArmorClass = 0; pInfo->m_iGrenadeType1 = GR_TYPE_NORMAL; pInfo->m_iGrenadeType2 = GR_TYPE_NONE; pInfo->m_InitAmmo[TFC_AMMO_SHELLS] = 60; pInfo->m_InitAmmo[TFC_AMMO_NAILS] = 50; pInfo->m_InitAmmo[TFC_AMMO_ROCKETS] = 0; pInfo->m_InitAmmo[TFC_AMMO_CELLS] = 0; pInfo->m_InitAmmo[TFC_AMMO_MEDIKIT] = 0; pInfo->m_InitAmmo[TFC_AMMO_DETPACK] = 0; pInfo->m_InitAmmo[TFC_AMMO_GRENADES1] = 2; pInfo->m_InitAmmo[TFC_AMMO_GRENADES2] = 0; pInfo->m_MaxAmmo[TFC_AMMO_SHELLS] = 75; pInfo->m_MaxAmmo[TFC_AMMO_NAILS] = 100; pInfo->m_MaxAmmo[TFC_AMMO_ROCKETS] = 25; pInfo->m_MaxAmmo[TFC_AMMO_CELLS] = 50; pInfo->m_MaxAmmo[TFC_AMMO_MEDIKIT] = 0; pInfo->m_MaxAmmo[TFC_AMMO_DETPACK] = 0; pInfo->m_MaxAmmo[TFC_AMMO_GRENADES1] = 4; pInfo->m_MaxAmmo[TFC_AMMO_GRENADES2] = 4; // PC_SOLDIER. pInfo = &g_TFCPlayerClassInfo[PC_SOLDIER]; pInfo->m_pClassName = "soldier"; pInfo->m_pModelName = "models/player/soldier.mdl"; pInfo->m_flMaxSpeed = 240; pInfo->m_iMaxHealth = 100; pInfo->m_iInitArmor = 100; pInfo->m_iMaxArmor = 200; pInfo->m_flInitArmorType = 0.8; pInfo->m_flMaxArmorType = 0.8; pInfo->m_nArmorClasses = 31; pInfo->m_iInitArmorClass = 0; pInfo->m_iGrenadeType1 = GR_TYPE_NORMAL; pInfo->m_iGrenadeType2 = GR_TYPE_NAIL; pInfo->m_InitAmmo[TFC_AMMO_SHELLS] = 50; pInfo->m_InitAmmo[TFC_AMMO_NAILS] = 0; pInfo->m_InitAmmo[TFC_AMMO_ROCKETS] = 10; pInfo->m_InitAmmo[TFC_AMMO_CELLS] = 0; pInfo->m_InitAmmo[TFC_AMMO_MEDIKIT] = 0; pInfo->m_InitAmmo[TFC_AMMO_DETPACK] = 0; pInfo->m_InitAmmo[TFC_AMMO_GRENADES1] = 2; pInfo->m_InitAmmo[TFC_AMMO_GRENADES2] = 1; pInfo->m_MaxAmmo[TFC_AMMO_SHELLS] = 100; pInfo->m_MaxAmmo[TFC_AMMO_NAILS] = 100; pInfo->m_MaxAmmo[TFC_AMMO_ROCKETS] = 50; pInfo->m_MaxAmmo[TFC_AMMO_CELLS] = 50; pInfo->m_MaxAmmo[TFC_AMMO_MEDIKIT] = 0; pInfo->m_MaxAmmo[TFC_AMMO_DETPACK] = 0; pInfo->m_MaxAmmo[TFC_AMMO_GRENADES1] = 4; pInfo->m_MaxAmmo[TFC_AMMO_GRENADES2] = 4; // PC_DEMOMAN. pInfo = &g_TFCPlayerClassInfo[PC_DEMOMAN]; pInfo->m_pClassName = "demoman"; pInfo->m_pModelName = "models/player/demo.mdl"; pInfo->m_flMaxSpeed = 280; pInfo->m_iMaxHealth = 90; pInfo->m_iInitArmor = 50; pInfo->m_iMaxArmor = 120; pInfo->m_flInitArmorType = 0.6; pInfo->m_flMaxArmorType = 0.6; pInfo->m_nArmorClasses = 31; pInfo->m_iInitArmorClass = 0; pInfo->m_iGrenadeType1 = GR_TYPE_NORMAL; pInfo->m_iGrenadeType2 = GR_TYPE_MIRV; pInfo->m_InitAmmo[TFC_AMMO_SHELLS] = 30; pInfo->m_InitAmmo[TFC_AMMO_NAILS] = 0; pInfo->m_InitAmmo[TFC_AMMO_ROCKETS] = 20; pInfo->m_InitAmmo[TFC_AMMO_CELLS] = 0; pInfo->m_InitAmmo[TFC_AMMO_MEDIKIT] = 0; pInfo->m_InitAmmo[TFC_AMMO_DETPACK] = 0; pInfo->m_InitAmmo[TFC_AMMO_GRENADES1] = 2; pInfo->m_InitAmmo[TFC_AMMO_GRENADES2] = 2; pInfo->m_MaxAmmo[TFC_AMMO_SHELLS] = 75; pInfo->m_MaxAmmo[TFC_AMMO_NAILS] = 50; pInfo->m_MaxAmmo[TFC_AMMO_ROCKETS] = 50; pInfo->m_MaxAmmo[TFC_AMMO_CELLS] = 50; pInfo->m_MaxAmmo[TFC_AMMO_MEDIKIT] = 0; pInfo->m_MaxAmmo[TFC_AMMO_DETPACK] = 0; pInfo->m_MaxAmmo[TFC_AMMO_GRENADES1] = 4; pInfo->m_MaxAmmo[TFC_AMMO_GRENADES2] = 4; // PC_MEDIC. pInfo = &g_TFCPlayerClassInfo[PC_MEDIC]; pInfo->m_pClassName = "medic"; pInfo->m_pModelName = "models/player/medic.mdl"; pInfo->m_flMaxSpeed = 320; pInfo->m_iMaxHealth = 90; pInfo->m_iInitArmor = 50; pInfo->m_iMaxArmor = 100; pInfo->m_flInitArmorType = 0.3; pInfo->m_flMaxArmorType = 0.6; pInfo->m_nArmorClasses = 11; pInfo->m_iInitArmorClass = 0; pInfo->m_iGrenadeType1 = GR_TYPE_NORMAL; pInfo->m_iGrenadeType2 = GR_TYPE_CONCUSSION; pInfo->m_InitAmmo[TFC_AMMO_SHELLS] = 50; pInfo->m_InitAmmo[TFC_AMMO_NAILS] = 50; pInfo->m_InitAmmo[TFC_AMMO_ROCKETS] = 0; pInfo->m_InitAmmo[TFC_AMMO_CELLS] = 0; pInfo->m_InitAmmo[TFC_AMMO_MEDIKIT] = 50; pInfo->m_InitAmmo[TFC_AMMO_DETPACK] = 0; pInfo->m_InitAmmo[TFC_AMMO_GRENADES1] = 2; pInfo->m_InitAmmo[TFC_AMMO_GRENADES2] = 2; pInfo->m_MaxAmmo[TFC_AMMO_SHELLS] = 75; pInfo->m_MaxAmmo[TFC_AMMO_NAILS] = 150; pInfo->m_MaxAmmo[TFC_AMMO_ROCKETS] = 25; pInfo->m_MaxAmmo[TFC_AMMO_CELLS] = 50; pInfo->m_MaxAmmo[TFC_AMMO_MEDIKIT] = 50; pInfo->m_MaxAmmo[TFC_AMMO_DETPACK] = 0; pInfo->m_MaxAmmo[TFC_AMMO_GRENADES1] = 4; pInfo->m_MaxAmmo[TFC_AMMO_GRENADES2] = 4; // PC_HWGUY. pInfo = &g_TFCPlayerClassInfo[PC_HWGUY]; pInfo->m_pClassName = "hwguy"; pInfo->m_pModelName = "models/player/hvyweapon.mdl"; pInfo->m_flMaxSpeed = 230; pInfo->m_iMaxHealth = 100; pInfo->m_iInitArmor = 150; pInfo->m_iMaxArmor = 300; pInfo->m_flInitArmorType = 0.8; pInfo->m_flMaxArmorType = 0.8; pInfo->m_nArmorClasses = 31; pInfo->m_iInitArmorClass = 0; pInfo->m_iGrenadeType1 = GR_TYPE_NORMAL; pInfo->m_iGrenadeType2 = GR_TYPE_MIRV; pInfo->m_InitAmmo[TFC_AMMO_SHELLS] = 200; pInfo->m_InitAmmo[TFC_AMMO_NAILS] = 0; pInfo->m_InitAmmo[TFC_AMMO_ROCKETS] = 0; pInfo->m_InitAmmo[TFC_AMMO_CELLS] = 30; pInfo->m_InitAmmo[TFC_AMMO_MEDIKIT] = 0; pInfo->m_InitAmmo[TFC_AMMO_DETPACK] = 0; pInfo->m_InitAmmo[TFC_AMMO_GRENADES1] = 2; pInfo->m_InitAmmo[TFC_AMMO_GRENADES2] = 1; pInfo->m_MaxAmmo[TFC_AMMO_SHELLS] = 200; pInfo->m_MaxAmmo[TFC_AMMO_NAILS] = 200; pInfo->m_MaxAmmo[TFC_AMMO_ROCKETS] = 25; pInfo->m_MaxAmmo[TFC_AMMO_CELLS] = 50; pInfo->m_MaxAmmo[TFC_AMMO_MEDIKIT] = 0; pInfo->m_MaxAmmo[TFC_AMMO_DETPACK] = 0; pInfo->m_MaxAmmo[TFC_AMMO_GRENADES1] = 4; pInfo->m_MaxAmmo[TFC_AMMO_GRENADES2] = 4; // PC_PYRO. pInfo = &g_TFCPlayerClassInfo[PC_PYRO]; pInfo->m_pClassName = "pyro"; pInfo->m_pModelName = "models/player/pyro.mdl"; pInfo->m_flMaxSpeed = 300; pInfo->m_iMaxHealth = 100; pInfo->m_iInitArmor = 50; pInfo->m_iMaxArmor = 150; pInfo->m_flInitArmorType = 0.6; pInfo->m_flMaxArmorType = 0.6; pInfo->m_nArmorClasses = 27; pInfo->m_iInitArmorClass = 0; pInfo->m_iGrenadeType1 = GR_TYPE_NORMAL; pInfo->m_iGrenadeType2 = GR_TYPE_NAPALM; pInfo->m_InitAmmo[TFC_AMMO_SHELLS] = 20; pInfo->m_InitAmmo[TFC_AMMO_NAILS] = 0; pInfo->m_InitAmmo[TFC_AMMO_ROCKETS] = 5; pInfo->m_InitAmmo[TFC_AMMO_CELLS] = 120; pInfo->m_InitAmmo[TFC_AMMO_MEDIKIT] = 0; pInfo->m_InitAmmo[TFC_AMMO_DETPACK] = 0; pInfo->m_InitAmmo[TFC_AMMO_GRENADES1] = 2; pInfo->m_InitAmmo[TFC_AMMO_GRENADES2] = 4; pInfo->m_MaxAmmo[TFC_AMMO_SHELLS] = 40; pInfo->m_MaxAmmo[TFC_AMMO_NAILS] = 50; pInfo->m_MaxAmmo[TFC_AMMO_ROCKETS] = 20; pInfo->m_MaxAmmo[TFC_AMMO_CELLS] = 200; pInfo->m_MaxAmmo[TFC_AMMO_MEDIKIT] = 0; pInfo->m_MaxAmmo[TFC_AMMO_DETPACK] = 0; pInfo->m_MaxAmmo[TFC_AMMO_GRENADES1] = 4; pInfo->m_MaxAmmo[TFC_AMMO_GRENADES2] = 4; // PC_SPY. pInfo = &g_TFCPlayerClassInfo[PC_SPY]; pInfo->m_pClassName = "spy"; pInfo->m_pModelName = "models/player/spy.mdl"; pInfo->m_flMaxSpeed = 300; pInfo->m_iMaxHealth = 90; pInfo->m_iInitArmor = 25; pInfo->m_iMaxArmor = 100; pInfo->m_flInitArmorType = 0.6; pInfo->m_flMaxArmorType = 0.6; pInfo->m_nArmorClasses = 27; pInfo->m_iInitArmorClass = 0; pInfo->m_iGrenadeType1 = GR_TYPE_NORMAL; pInfo->m_iGrenadeType2 = GR_TYPE_GAS; pInfo->m_InitAmmo[TFC_AMMO_SHELLS] = 40; pInfo->m_InitAmmo[TFC_AMMO_NAILS] = 50; pInfo->m_InitAmmo[TFC_AMMO_ROCKETS] = 0; pInfo->m_InitAmmo[TFC_AMMO_CELLS] = 10; pInfo->m_InitAmmo[TFC_AMMO_MEDIKIT] = 0; pInfo->m_InitAmmo[TFC_AMMO_DETPACK] = 0; pInfo->m_InitAmmo[TFC_AMMO_GRENADES1] = 2; pInfo->m_InitAmmo[TFC_AMMO_GRENADES2] = 2; pInfo->m_MaxAmmo[TFC_AMMO_SHELLS] = 40; pInfo->m_MaxAmmo[TFC_AMMO_NAILS] = 100; pInfo->m_MaxAmmo[TFC_AMMO_ROCKETS] = 15; pInfo->m_MaxAmmo[TFC_AMMO_CELLS] = 30; pInfo->m_MaxAmmo[TFC_AMMO_MEDIKIT] = 0; pInfo->m_MaxAmmo[TFC_AMMO_DETPACK] = 0; pInfo->m_MaxAmmo[TFC_AMMO_GRENADES1] = 4; pInfo->m_MaxAmmo[TFC_AMMO_GRENADES2] = 4; // PC_ENGINEER. pInfo = &g_TFCPlayerClassInfo[PC_ENGINEER]; pInfo->m_pClassName = "engineer"; pInfo->m_pModelName = "models/player/engineer.mdl"; pInfo->m_flMaxSpeed = 300; pInfo->m_iMaxHealth = 80; pInfo->m_iInitArmor = 25; pInfo->m_iMaxArmor = 50; pInfo->m_flInitArmorType = 0.3; pInfo->m_flMaxArmorType = 0.6; pInfo->m_nArmorClasses = 31; pInfo->m_iInitArmorClass = 0; pInfo->m_iGrenadeType1 = GR_TYPE_NORMAL; pInfo->m_iGrenadeType2 = GR_TYPE_EMP; pInfo->m_InitAmmo[TFC_AMMO_SHELLS] = 20; pInfo->m_InitAmmo[TFC_AMMO_NAILS] = 25; pInfo->m_InitAmmo[TFC_AMMO_ROCKETS] = 0; pInfo->m_InitAmmo[TFC_AMMO_CELLS] = 100; pInfo->m_InitAmmo[TFC_AMMO_MEDIKIT] = 0; pInfo->m_InitAmmo[TFC_AMMO_DETPACK] = 0; pInfo->m_InitAmmo[TFC_AMMO_GRENADES1] = 2; pInfo->m_InitAmmo[TFC_AMMO_GRENADES2] = 2; pInfo->m_MaxAmmo[TFC_AMMO_SHELLS] = 50; pInfo->m_MaxAmmo[TFC_AMMO_NAILS] = 50; pInfo->m_MaxAmmo[TFC_AMMO_ROCKETS] = 30; pInfo->m_MaxAmmo[TFC_AMMO_CELLS] = 200; pInfo->m_MaxAmmo[TFC_AMMO_MEDIKIT] = 0; pInfo->m_MaxAmmo[TFC_AMMO_DETPACK] = 0; pInfo->m_MaxAmmo[TFC_AMMO_GRENADES1] = 4; pInfo->m_MaxAmmo[TFC_AMMO_GRENADES2] = 4; // PC_CIVILIAN. pInfo = &g_TFCPlayerClassInfo[PC_CIVILIAN]; pInfo->m_pClassName = "civilian"; pInfo->m_pModelName = "models/player/civilian.mdl"; pInfo->m_flMaxSpeed = 240; pInfo->m_iMaxHealth = 50; pInfo->m_iInitArmor = 0; pInfo->m_iMaxArmor = 0; pInfo->m_flInitArmorType = 0; pInfo->m_flMaxArmorType = 0; pInfo->m_nArmorClasses = 0; pInfo->m_iInitArmorClass = 0; pInfo->m_iGrenadeType1 = GR_TYPE_NONE; pInfo->m_iGrenadeType2 = GR_TYPE_NONE; pInfo->m_InitAmmo[TFC_AMMO_SHELLS] = 0; pInfo->m_InitAmmo[TFC_AMMO_NAILS] = 0; pInfo->m_InitAmmo[TFC_AMMO_ROCKETS] = 0; pInfo->m_InitAmmo[TFC_AMMO_CELLS] = 0; pInfo->m_InitAmmo[TFC_AMMO_MEDIKIT] = 0; pInfo->m_InitAmmo[TFC_AMMO_DETPACK] = 0; pInfo->m_InitAmmo[TFC_AMMO_GRENADES1] = 0; pInfo->m_InitAmmo[TFC_AMMO_GRENADES2] = 0; pInfo->m_MaxAmmo[TFC_AMMO_SHELLS] = 0; pInfo->m_MaxAmmo[TFC_AMMO_NAILS] = 0; pInfo->m_MaxAmmo[TFC_AMMO_ROCKETS] = 0; pInfo->m_MaxAmmo[TFC_AMMO_CELLS] = 0; pInfo->m_MaxAmmo[TFC_AMMO_MEDIKIT] = 0; pInfo->m_MaxAmmo[TFC_AMMO_DETPACK] = 0; pInfo->m_MaxAmmo[TFC_AMMO_GRENADES1] = 4; pInfo->m_MaxAmmo[TFC_AMMO_GRENADES2] = 4; } } g_ClassInfoInitializer; const CTFCPlayerClassInfo* GetTFCClassInfo( int iClass ) { Assert( iClass >= 0 && iClass < PC_LASTCLASS ); return &g_TFCPlayerClassInfo[iClass]; }