You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
321 lines
9.0 KiB
321 lines
9.0 KiB
//========= 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
|
|
|