//========= Copyright Valve Corporation, All rights reserved. ============// // // Purpose: // //=============================================================================// #ifndef TFC_SHAREDDEFS_H #define TFC_SHAREDDEFS_H #ifdef _WIN32 #pragma once #endif #include "shareddefs.h" // Using MAP_DEBUG mode? #ifdef MAP_DEBUG #define MDEBUG(x) x #else #define MDEBUG(x) #endif #define TFC_PLAYER_VIEW_OFFSET Vector( 0, 0, 53.5 ) // Team IDs. // #define TEAM_SPECTATOR 0 // This is set in shareddefs.h #define TEAM_BLUE 1 #define TEAM_RED 2 #define TEAM_YELLOW 3 #define TEAM_GREEN 4 #define TEAM_MAXCOUNT 5 // update this if we ever add teams (unlikely) // Defines for the playerclass #define PC_UNDEFINED 0 #define PC_SCOUT 1 #define PC_SNIPER 2 #define PC_SOLDIER 3 #define PC_DEMOMAN 4 #define PC_MEDIC 5 #define PC_HWGUY 6 #define PC_PYRO 7 #define PC_SPY 8 #define PC_ENGINEER 9 #define PC_LAST_NORMAL_CLASS 9 #define PC_CIVILIAN 10 // Civilians are a special class. They cannot // be chosen by players, only enforced by maps #define PC_LASTCLASS 11 // Use this as the high-boundary for any loops // through the playerclass. /*======================*/ // Menu stuff // /*======================*/ #define MENU_DEFAULT 1 #define MENU_TEAM 2 #define MENU_CLASS 3 #define MENU_MAPBRIEFING 4 #define MENU_INTRO 5 #define MENU_CLASSHELP 6 #define MENU_CLASSHELP2 7 #define MENU_REPEATHELP 8 #define MENU_SPECHELP 9 #define MENU_SPY 12 #define MENU_SPY_SKIN 13 #define MENU_SPY_COLOR 14 #define MENU_ENGINEER 15 #define MENU_ENGINEER_FIX_DISPENSER 16 #define MENU_ENGINEER_FIX_SENTRYGUN 17 #define MENU_ENGINEER_FIX_MORTAR 18 #define MENU_DISPENSER 19 #define MENU_CLASS_CHANGE 20 #define MENU_TEAM_CHANGE 21 #define MENU_REFRESH_RATE 25 #define MENU_VOICETWEAK 50 // Additional classes // NOTE: adding them onto the Class_T's in baseentity.h is cheesy, but so is // having an #ifdef for each mod in baseentity.h. #define CLASS_TFGOAL ((Class_T)NUM_AI_CLASSES) #define CLASS_TFGOAL_TIMER ((Class_T)(NUM_AI_CLASSES+1)) #define CLASS_TFGOAL_ITEM ((Class_T)(NUM_AI_CLASSES+2)) #define CLASS_TFSPAWN ((Class_T)(NUM_AI_CLASSES+3)) #define CLASS_MACHINE ((Class_T)(NUM_AI_CLASSES+4)) // Building types #define BUILD_DISPENSER 1 #define BUILD_SENTRYGUN 2 #define BUILD_MORTAR 3 #define BUILD_TELEPORTER_ENTRY 4 #define BUILD_TELEPORTER_EXIT 5 // Grenade types. enum GrenadeType_t { GR_TYPE_NONE=0, GR_TYPE_NORMAL, GR_TYPE_CONCUSSION, GR_TYPE_NAIL, GR_TYPE_MIRV, GR_TYPE_NAPALM, GR_TYPE_GAS, GR_TYPE_EMP, GR_TYPE_CALTROP, NUM_GRENADE_TYPES }; // Max amount of each grenade each player can carry. // This is in addition to the player's extern int g_nMaxGrenades[NUM_GRENADE_TYPES]; // These are the names of the ammo types that go in the CAmmoDefs and that the // weapon script files reference. // These directly correspond to ammo_X in the goldsrc tfc code. #define TFC_AMMO_DUMMY 0 // This is a dummy index, to make the CAmmoDef indices correct for the other ammo types. #define TFC_AMMO_SHELLS 1 #define TFC_AMMO_SHELLS_NAME "TFC_AMMO_SHELLS" #define TFC_AMMO_NAILS 2 #define TFC_AMMO_NAILS_NAME "TFC_AMMO_NAILS" #define TFC_AMMO_ROCKETS 3 #define TFC_AMMO_ROCKETS_NAME "TFC_AMMO_ROCKETS" #define TFC_AMMO_CELLS 4 #define TFC_AMMO_CELLS_NAME "TFC_AMMO_CELLS" #define TFC_AMMO_MEDIKIT 5 #define TFC_AMMO_MEDIKIT_NAME "TFC_AMMO_MEDIKIT" #define TFC_AMMO_DETPACK 6 #define TFC_AMMO_DETPACK_NAME "TFC_AMMO_DETPACK" #define TFC_AMMO_GRENADES1 7 #define TFC_AMMO_GRENADES1_NAME "TFC_AMMO_GRENADES1" #define TFC_AMMO_GRENADES2 8 #define TFC_AMMO_GRENADES2_NAME "TFC_AMMO_GRENADES2" #define TFC_NUM_AMMO_TYPES 9 // NOTE: KEEP THESE UP TO DATE WITH g_AmmoTypeNames[] extern const char* g_AmmoTypeNames[TFC_NUM_AMMO_TYPES]; // TeamFortress State Flags #define TFSTATE_GRENPRIMED 0x000001 // Whether the player has a primed grenade #define TFSTATE_RELOADING 0x000002 // Whether the player is reloading #define TFSTATE_ALTKILL 0x000004 // #TRUE if killed with a weapon not in self.weapon: NOT USED ANYMORE #define TFSTATE_RANDOMPC 0x000008 // Whether Playerclass is random, new one each respawn #define TFSTATE_INFECTED 0x000010 // set when player is infected by the bioweapon #define TFSTATE_INVINCIBLE 0x000020 // Player has permanent Invincibility (Usually by GoalItem) #define TFSTATE_INVISIBLE 0x000040 // Player has permanent Invisibility (Usually by GoalItem) #define TFSTATE_QUAD 0x000080 // Player has permanent Quad Damage (Usually by GoalItem) #define TFSTATE_RADSUIT 0x000100 // Player has permanent Radsuit (Usually by GoalItem) #define TFSTATE_BURNING 0x000200 // Is on fire #define TFSTATE_GRENTHROWING 0x000400 // is throwing a grenade #define TFSTATE_AIMING 0x000800 // is using the laser sight #define TFSTATE_ZOOMOFF 0x001000 // doesn't want the FOV changed when zooming #define TFSTATE_RESPAWN_READY 0x002000 // is waiting for respawn, and has pressed fire #define TFSTATE_HALLUCINATING 0x004000 // set when player is hallucinating #define TFSTATE_TRANQUILISED 0x008000 // set when player is tranquilised #define TFSTATE_CANT_MOVE 0x010000 // set when player is setting a detpack #define TFSTATE_RESET_FLAMETIME 0x020000 // set when the player has to have his flames increased in health #define TFSTATE_HIGHEST_VALUE TFSTATE_RESET_FLAMETIME // items #define IT_SHOTGUN (1<<0) #define IT_SUPER_SHOTGUN (1<<1) #define IT_NAILGUN (1<<2) #define IT_SUPER_NAILGUN (1<<3) #define IT_GRENADE_LAUNCHER (1<<4) #define IT_ROCKET_LAUNCHER (1<<5) #define IT_LIGHTNING (1<<6) #define IT_EXTRA_WEAPON (1<<7) #define IT_SHELLS (1<<8) #define IT_NAILS (1<<9) #define IT_ROCKETS (1<<10) #define IT_CELLS (1<<11) #define IT_AXE (1<<12) #define IT_ARMOR1 (1<<13) #define IT_ARMOR2 (1<<14) #define IT_ARMOR3 (1<<15) #define IT_SUPERHEALTH (1<<16) #define IT_KEY1 (1<<17) #define IT_KEY2 (1<<18) #define IT_INVISIBILITY (1<<19) #define IT_INVULNERABILITY (1<<20) #define IT_SUIT (1<<21) #define IT_QUAD (1<<22) #define IT_HOOK (1<<23) #define IT_KEY3 (1<<24) // Stomp invisibility #define IT_KEY4 (1<<25) // Stomp invulnerability #define IT_LAST_ITEM IT_KEY4 enum TFCTimer_t { TF_TIMER_ANY=0, TF_TIMER_CONCUSSION, TF_TIMER_INFECTION, TF_TIMER_HALLUCINATION, TF_TIMER_TRANQUILISATION, TF_TIMER_ROTHEALTH, TF_TIMER_REGENERATION, TF_TIMER_GRENPRIME, TF_TIMER_CELLREGENERATION, TF_TIMER_DETPACKSET, TF_TIMER_DETPACKDISARM, TF_TIMER_BUILD, TF_TIMER_CHECKBUILDDISTANCE, TF_TIMER_DISGUISE, TF_TIMER_DISPENSERREFILL, // Non player timers. TF_TIMER_RETURNITEM, TF_TIMER_DELAYEDGOAL, TF_TIMER_ENDROUND }; /*==================================================*/ /* New Weapon Related Defines */ /*==================================================*/ // Medikit #define WEAP_MEDIKIT_OVERHEAL 50 // Amount of superhealth over max_health the medikit will dispense #define WEAP_MEDIKIT_HEAL 200 // Amount medikit heals per hit //-------------- // TFC Specific damage flags //-------------- #define DMG_IGNORE_MAXHEALTH (DMG_LASTGENERICFLAG<<1) #define DMG_IGNOREARMOR (DMG_LASTGENERICFLAG<<2) // ------------------------------------------------------------------------------ // // Info for each player class. // ------------------------------------------------------------------------------ // class CTFCPlayerClassInfo { public: const char *m_pClassName; const char *m_pModelName; // What model this class uses. float m_flMaxSpeed; int m_iMaxHealth; int m_iInitArmor; int m_iMaxArmor; float m_flInitArmorType; float m_flMaxArmorType; int m_iInitArmorClass; int m_nArmorClasses; // What types of grenades does this guy carry? // GR_TYPE_ defines. GrenadeType_t m_iGrenadeType1; GrenadeType_t m_iGrenadeType2; int m_InitAmmo[TFC_NUM_AMMO_TYPES]; // These are in the same order as g_AmmoTypeNames. int m_MaxAmmo[TFC_NUM_AMMO_TYPES]; // These are in the same order as g_AmmoTypeNames. }; const CTFCPlayerClassInfo* GetTFCClassInfo( int iClass ); // The various states the player can be in during the join game process. enum TFCPlayerState { // Happily running around in the game. // You can't move though if CSGameRules()->IsFreezePeriod() returns true. // This state can jump to a bunch of other states like STATE_PICKINGCLASS or STATE_DEATH_ANIM. STATE_ACTIVE=0, // This is the state you're in when you first enter the server. // It's switching between intro cameras every few seconds, and there's a level info // screen up. STATE_WELCOME, // Show the level intro screen. // During these states, you can either be a new player waiting to join, or // you can be a live player in the game who wants to change teams. // Either way, you can't move while choosing team or class (or while any menu is up). STATE_PICKINGTEAM, // Choosing team. STATE_PICKINGCLASS, // Choosing class. STATE_OBSERVER_MODE, STATE_DYING, TFC_NUM_PLAYER_STATES }; #endif // TFC_SHAREDDEFS_H