mirror of
https://github.com/nillerusr/source-engine.git
synced 2024-12-27 16:43:01 +00:00
322 lines
9.0 KiB
C
322 lines
9.0 KiB
C
|
//========= 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
|