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.
663 lines
21 KiB
663 lines
21 KiB
//========= Copyright Valve Corporation, All rights reserved. ============// |
|
// |
|
// Purpose: |
|
// |
|
// $NoKeywords: $ |
|
//=============================================================================// |
|
|
|
#ifndef TF_SHAREDDEFS_H |
|
#define TF_SHAREDDEFS_H |
|
|
|
#ifdef _WIN32 |
|
#pragma once |
|
#endif |
|
|
|
#define MAX_TF_TEAMS 4 |
|
|
|
extern ConVar inv_demo; |
|
extern ConVar lod_effect_distance; |
|
|
|
#include "const.h" |
|
|
|
//-------------------------------------------------------------------------- |
|
// Teams |
|
#define TEAM_HUMANS 1 |
|
#define TEAM_ALIENS 2 |
|
|
|
//-------------------------------------------------------------------------- |
|
// TF player flags. |
|
#define TF_PLAYER_HIDDEN (1<<0) |
|
#define TF_PLAYER_DAMAGE_BOOST (1<<1) |
|
#define TF_PLAYER_NUMFLAGS 2 |
|
//-------------------------------------------------------------------------- |
|
// Custom Kill types |
|
#define DMG_KILL_BULLRUSH 1 |
|
|
|
|
|
//-------------- |
|
// TF2 SPECIFIC DAMAGE FLAGS |
|
//-------------- |
|
#define DMG_EMP (DMG_LASTGENERICFLAG<<1) // Hit by EMP |
|
#define DMG_PROBE (DMG_LASTGENERICFLAG<<2) // Doing a shield-aware probe (heal guns, emp guns) |
|
|
|
|
|
//-------------------------------------------------------------------------- |
|
// Zone states |
|
#define ZONE_FRIENDLY 1 |
|
#define ZONE_ENEMY 2 |
|
#define ZONE_CONTESTED 3 |
|
|
|
//-------------------------------------------------------------------------- |
|
// Loot state |
|
#define LOOT_NOT 0 |
|
#define LOOT_CAPABLE 1 |
|
#define LOOT_LOOTING 2 |
|
|
|
//-------------------------------------------------------------------------- |
|
// Powerups |
|
//-------------------------------------------------------------------------- |
|
enum |
|
{ |
|
POWERUP_BOOST, // Medic, buff station |
|
POWERUP_EMP, // Technician |
|
POWERUP_RUSH, // Rally flag |
|
POWERUP_POWER, // Object power |
|
MAX_POWERUPS |
|
}; |
|
|
|
#define MAX_CABLE_CONNECTIONS 4 |
|
|
|
//-------------------------------------------------------------------------- |
|
// Acts |
|
//-------------------------------------------------------------------------- |
|
#define MIN_ACT_OVERLAY_TIME 10.0 |
|
|
|
// C/C_InfoAct spawnflags |
|
#define SF_ACT_INTERMISSION 1 |
|
#define SF_ACT_WAITINGFORGAMESTART 2 |
|
|
|
#define SF_ACT_BITS 2 |
|
|
|
//-------------------------------------------------------------------------- |
|
// Order types |
|
//-------------------------------------------------------------------------- |
|
enum |
|
{ |
|
ORDER_NONE = 0, |
|
ORDER_ATTACK, // Enemy held resource zone, attack it and capture it |
|
ORDER_DEFEND, // Defend a resource zone we own |
|
ORDER_CAPTURE, // Resource zone not held by either team, capture it |
|
ORDER_KILL, // Kill a specific enemy player |
|
ORDER_HEAL, // Heal a specific friendly player |
|
ORDER_BUILD, // Order to build something. |
|
// m_iStructure is one of the OBJ_ defines. |
|
// If it's a sentry gun order, it's always OBJ_SENTRYGUN_PLASMA. |
|
ORDER_REPAIR, // Repair a built item. |
|
ORDER_MORTAR_ATTACK, // Build a mortar to shell an enemy object. |
|
ORDER_ASSIST // Assist a player who is under attack. |
|
}; |
|
|
|
|
|
//-------------------------------------------------------------------------- |
|
// Collision groups |
|
//-------------------------------------------------------------------------- |
|
enum |
|
{ |
|
TFCOLLISION_GROUP_SHIELD = LAST_SHARED_COLLISION_GROUP, |
|
TFCOLLISION_GROUP_WEAPON, |
|
TFCOLLISION_GROUP_GRENADE, |
|
TFCOLLISION_GROUP_RESOURCE_CHUNK, |
|
// Combat objects (override for above) |
|
TFCOLLISION_GROUP_COMBATOBJECT, |
|
// Objects in general |
|
TFCOLLISION_GROUP_OBJECT, |
|
TFCOLLISION_GROUP_OBJECT_SOLIDTOPLAYERMOVEMENT, |
|
}; |
|
|
|
//-------------------------------------------------------------------------- |
|
// MAP DEFINED OBJECTS |
|
//-------------------------------------------------------------------------- |
|
#define MAX_OBJ_CUSTOMNAME_SIZE 128 |
|
|
|
//-------------------------------------------------------------------------- |
|
// OBJECTS |
|
//-------------------------------------------------------------------------- |
|
enum |
|
{ |
|
OBJ_POWERPACK=0, |
|
OBJ_RESUPPLY, |
|
OBJ_SENTRYGUN_PLASMA, // Orders always refer to this type of sentry gun. |
|
OBJ_SENTRYGUN_ROCKET_LAUNCHER, |
|
OBJ_SHIELDWALL, |
|
OBJ_RESOURCEPUMP, |
|
OBJ_RESPAWN_STATION, |
|
OBJ_RALLYFLAG, |
|
OBJ_MANNED_PLASMAGUN, |
|
OBJ_MANNED_MISSILELAUNCHER, |
|
OBJ_MANNED_SHIELD, |
|
OBJ_EMPGENERATOR, |
|
OBJ_BUFF_STATION, |
|
OBJ_BARBED_WIRE, |
|
OBJ_MCV_SELECTION_PANEL, |
|
OBJ_MAPDEFINED, |
|
OBJ_MORTAR, |
|
// ADD STANDARD OBJECTS HERE |
|
|
|
// Upgrades |
|
OBJ_SELFHEAL, |
|
OBJ_ARMOR_UPGRADE, |
|
OBJ_VEHICLE_BOOST, |
|
OBJ_EXPLOSIVES, |
|
OBJ_DRIVER_MACHINEGUN, |
|
// ADD UPGRADES HERE |
|
|
|
// Vehicles |
|
OBJ_BATTERING_RAM, |
|
OBJ_SIEGE_TOWER, |
|
OBJ_WAGON, |
|
OBJ_FLATBED, |
|
OBJ_VEHICLE_MORTAR, |
|
OBJ_VEHICLE_TELEPORT_STATION, |
|
OBJ_VEHICLE_TANK, |
|
OBJ_VEHICLE_MOTORCYCLE, |
|
OBJ_WALKER_STRIDER, |
|
OBJ_WALKER_MINI_STRIDER, |
|
// ADD VEHICLES HERE |
|
|
|
// Defensive buildings |
|
OBJ_TOWER, |
|
OBJ_TUNNEL, |
|
OBJ_SANDBAG_BUNKER, |
|
OBJ_BUNKER, |
|
OBJ_DRAGONSTEETH, |
|
// ADD DEFENSIVE-ONLY BUILDINGS HERE |
|
|
|
// If you add a new object, you need to add it to the g_ObjectInfos array |
|
// in tf_shareddefs.cpp, and add it's data to the scripts/object.txt |
|
|
|
OBJ_LAST, |
|
}; |
|
|
|
#define OBJECT_COST_MULTIPLIER_PER_OBJECT 3 |
|
#define OBJECT_UPGRADE_COST_MULTIPLIER_PER_LEVEL 3 |
|
|
|
bool IsObjectAnUpgrade( int iObjectType ); |
|
bool IsObjectAVehicle( int iObjectType ); |
|
bool IsObjectADefensiveBuilding( int iObjectType ); |
|
|
|
class CHudTexture; |
|
|
|
class CObjectInfo |
|
{ |
|
public: |
|
CObjectInfo( char *pObjectName ); |
|
~CObjectInfo(); |
|
|
|
// This is initialized by the code and matched with a section in objects.txt |
|
char *m_pObjectName; |
|
|
|
// This stuff all comes from objects.txt |
|
char *m_pClassName; // Code classname (in LINK_ENTITY_TO_CLASS). |
|
char *m_pStatusName; // Shows up when crosshairs are on the object. |
|
float m_flBuildTime; |
|
int m_nMaxObjects; // Maximum number of objects per player |
|
int m_Cost; // Base object resource cost |
|
float m_CostMultiplierPerInstance; // Cost multiplier |
|
int m_UpgradeCost; // Base object resource cost for upgrading |
|
int m_MaxUpgradeLevel; // Max object upgrade level |
|
char *m_pBuilderWeaponName; // Names shown for each object onscreen when using the builder weapon |
|
char *m_pBuilderPlacementString; // String shown to player during placement of this object |
|
int m_SelectionSlot; // Weapon selection slots for objects |
|
int m_SelectionPosition; // Weapon selection positions for objects |
|
bool m_bSolidToPlayerMovement; |
|
float m_flSapperAttachTime; // Time it takes to place a sapper on this object |
|
|
|
// HUD weapon selection menu icon ( from hud_textures.txt ) |
|
char *m_pIconActive; |
|
}; |
|
|
|
// Loads the objects.txt script. |
|
class IBaseFileSystem; |
|
void LoadObjectInfos( IBaseFileSystem *pFileSystem ); |
|
|
|
// Get a CObjectInfo from a TFOBJ_ define. |
|
const CObjectInfo* GetObjectInfo( int iObject ); |
|
|
|
|
|
// Object utility funcs |
|
bool ClassCanBuild( int iClass, int iObjectType ); |
|
int CalculateObjectCost( int iObjectType, int iNumberOfObjects, int iTeam, bool bLast = false ); |
|
int CalculateObjectUpgrade( int iObjectType, int iObjectLevel ); |
|
|
|
//-------------------------------------------------------------------------- |
|
// OBJECT FLAGS |
|
//-------------------------------------------------------------------------- |
|
enum |
|
{ |
|
OF_SUPPRESS_APPEAR_ON_MINIMAP = 0x0001, |
|
OF_SUPPRESS_NOTIFY_UNDER_ATTACK = 0x0002, |
|
OF_SUPPRESS_VISIBLE_TO_TACTICAL = 0x0004, |
|
OF_ALLOW_REPEAT_PLACEMENT = 0x0008, |
|
OF_SUPPRESS_TECH_ANALYZER = 0x0010, |
|
OF_DONT_AUTO_REPAIR = 0x0020, |
|
OF_ALIGN_TO_GROUND = 0x0040, // Align my angles to match the ground underneath me |
|
OF_DONT_PREVENT_BUILD_NEAR_OBJ = 0x0080, // Don't prevent building if there's another object nearby |
|
OF_CAN_BE_PICKED_UP = 0x0100, |
|
OF_DOESNT_NEED_POWER = 0x0200, // Doesn't need power, even on the human team |
|
OF_DOESNT_HAVE_A_MODEL = 0x0400, // It's built from map placed geometry |
|
OF_MUST_BE_BUILT_IN_CONSTRUCTION_YARD = 0x0800, |
|
OF_MUST_BE_BUILT_IN_RESOURCE_ZONE = 0x1000, |
|
OF_MUST_BE_BUILT_ON_ATTACHMENT = 0x2000, |
|
OF_CANNOT_BE_DISMANTLED = 0x4000, |
|
|
|
OF_BIT_COUNT = 15 |
|
}; |
|
|
|
|
|
//-------------------------------------------------------------------------- |
|
// Builder "weapon" states |
|
//-------------------------------------------------------------------------- |
|
enum |
|
{ |
|
BS_IDLE = 0, |
|
BS_SELECTING, |
|
BS_PLACING, |
|
BS_PLACING_INVALID, |
|
BS_BUILDING, |
|
BS_REPAIR, |
|
}; |
|
|
|
|
|
//-------------------------------------------------------------------------- |
|
// Builder object id... |
|
//-------------------------------------------------------------------------- |
|
enum |
|
{ |
|
BUILDER_OBJECT_BITS = 8, |
|
BUILDER_INVALID_OBJECT = ((1 << BUILDER_OBJECT_BITS) - 1) |
|
}; |
|
|
|
// Analyzer state |
|
enum |
|
{ |
|
AS_INACTIVE = 0, |
|
AS_SUBVERTING, |
|
AS_ANALYZING |
|
}; |
|
|
|
// Max number of objects a team can have |
|
#define MAX_OBJECTS_PER_TEAM 512 |
|
#define MAX_OBJECTS_PER_PLAYER 64 |
|
|
|
|
|
//-------------------------------------------------------------------------- |
|
// BUILDING |
|
//-------------------------------------------------------------------------- |
|
// Build checks will return one of these for a player |
|
enum |
|
{ |
|
CB_CAN_BUILD, // Player is allowed to build this object |
|
CB_NOT_RESEARCHED, // Player's team hasn't researched this object |
|
CB_LIMIT_REACHED, // Player has reached the limit of the number of these objects allowed |
|
CB_NEED_RESOURCES, // Player doesn't have enough resources to build this object |
|
CB_NEED_ADRENALIN, // Commando doesn't have enough adrenalin to build a rally flag |
|
}; |
|
|
|
//-------------------------------------------------------------------------- |
|
// MORTAR |
|
//-------------------------------------------------------------------------- |
|
// Mortar Firing States |
|
enum |
|
{ |
|
MORTAR_IDLE, |
|
MORTAR_CHARGING_POWER, |
|
MORTAR_CHARGING_ACCURACY, |
|
}; |
|
|
|
// Mortar salvos |
|
#define MORTAR_SALVO_SIZE 5 |
|
#define MORTAR_RELOAD_TIME 5.0 |
|
|
|
// Mortar firing details |
|
#define MORTAR_RANGE_MIN 1024 |
|
#define MORTAR_RANGE_MAX_INITIAL 3000 |
|
#define MORTAR_RANGE_MAX_UPGRADED 5000 |
|
|
|
// Inaccuracy Data |
|
// These values are all max inaccuracies. The accuracy used is between 0 & Max, based upon how close the player gets to hitting |
|
// the fire button at the right time on the mortar firing slider bar. |
|
// Perpendicular-to-the-shot inaccuracy |
|
#define MORTAR_INACCURACY_MAX_INITIAL 0.85 // Percentage of distance that a mortar can be wide of the mark |
|
#define MORTAR_INACCURACY_MAX_UPGRADED 0.35 // Percentage of distance that a mortar can be wide of the mark |
|
// Distance inaccuracy |
|
#define MORTAR_DIST_INACCURACY 0.3 // Percentage of distance that the mortar can deviate |
|
|
|
// Mortar firing details |
|
#define MORTAR_CHARGE_POWER_RATE 1.5 // Time taken to hit full charge for power |
|
#define MORTAR_CHARGE_ACCURACY_RATE 1.25 // Time taken to hit perfect accuracy, given a half-power shot |
|
|
|
// Mortar ammo types |
|
enum MortarAmmoType |
|
{ |
|
MA_SHELL = 0, // Normal mortar round |
|
//MA_SMOKE, // Smoke mortar round |
|
MA_CLUSTER, // Mirv mortar round |
|
MA_STARBURST, // Starburst / phosphorous mortar round |
|
|
|
MA_LASTAMMOTYPE, |
|
}; |
|
|
|
extern char *MortarAmmoNames[ MA_LASTAMMOTYPE ]; |
|
extern char *MortarAmmoTechs[ MA_LASTAMMOTYPE ]; |
|
extern int MortarAmmoMax[ MA_LASTAMMOTYPE ]; |
|
|
|
//-------------------------------------------------------------------------- |
|
// ROCKET PACK |
|
//-------------------------------------------------------------------------- |
|
#define RP_LOCK_TIME 3.0 // Time taken to lock onto a target |
|
|
|
//-------------------------------------------------------------------------- |
|
// PARTICLE BEAM |
|
//-------------------------------------------------------------------------- |
|
#define PB_RECHARGE_TIME 30.0 // Time taken to recharge the particle beam |
|
|
|
//-------------------------------------------------------------------------- |
|
// PLASMA PROJECTILE TYPES |
|
//-------------------------------------------------------------------------- |
|
enum |
|
{ |
|
PLASMATYPE_GATLING, |
|
PLASMATYPE_EMP, |
|
PLASMATYPE_GUIDED, |
|
PLASMATYPE_GUIDED_NOTARGET, |
|
PLASMATYPE_GUIDED_PARRIED, |
|
PLASMATYPE_PLASMABALL, |
|
PLASMATYPE_PLASMABALL_EXPLOSIVE, |
|
}; |
|
|
|
#define PLASMA_VELOCITY ( 2500 ) |
|
|
|
//-------------------------------------------------------------------------- |
|
// SCANNERS |
|
//-------------------------------------------------------------------------- |
|
// Ranges |
|
#define SCANNER_RANGE 3000 |
|
#define LOCAL_PLAYER_SCANNER_RANGE 1500 |
|
|
|
//-------------------------------------------------------------------------- |
|
// EMP |
|
//-------------------------------------------------------------------------- |
|
#define EMP_HITSCAN_DURATION 5.0f |
|
|
|
//-------------------------------------------------------------------------- |
|
// KNOCKDOWN |
|
//-------------------------------------------------------------------------- |
|
// Knockdown blend in and out times |
|
#define KNOCKDOWN_BLEND_IN ( 0.3f ) |
|
#define KNOCKDOWN_BLEND_OUT ( 0.5f ) |
|
|
|
//-------------------------------------------------------------------------- |
|
// THERMAL VISION |
|
//-------------------------------------------------------------------------- |
|
// Thermal vision radius |
|
// Players outside of this radius will not be sent to the local player |
|
// Player's inside start to fade at the startfade distance and are alpha'd out completely |
|
// at the full radius |
|
#define THERMAL_VISION_RADIUS ( 1024.0f ) |
|
#define THERMAL_VISION_STARTFADE ( THERMAL_VISION_RADIUS / 2.0f ) |
|
|
|
//-------------------------------------------------------------------------- |
|
// CAMO |
|
//-------------------------------------------------------------------------- |
|
// Infiltrator Camouflage constants |
|
// # of seconds to go into/back into camo mode |
|
#define CAMO_ENABLETIME ( 3.0f ) |
|
// # of seconds to remove |
|
#define CAMO_REMOVETIME ( 1.0f ) |
|
// # of seconds to temporarily suppress |
|
#define CAMO_SUPPRESSTIME ( 1.0f ) |
|
|
|
// Outside this, exclude from PVS |
|
#define CAMO_OUTER_RADIUS ( 2048.0f ) |
|
// From here to outer, just alpha to 0 |
|
#define CAMO_INNER_RADIUS ( CAMO_OUTER_RADIUS / 2.0f ) |
|
// 75 % opacity at the inner_radius |
|
#define CAMO_INNER_ALPHA ( 192 ) |
|
// From here to inner fade alpha again and start using invis effect |
|
#define CAMO_INVIS_RADIUS ( CAMO_INNER_RADIUS / 2.0f ) |
|
|
|
// Infiltrator's phaseout duration |
|
#define INFILTRATOR_PHASEOUT_DURATION 30.0f |
|
// Time required to recharge |
|
#define INFILTRATOR_PHASEOUT_RECHARGETIME 30.0f |
|
|
|
// After sitting still, remove from tactical and minimiap starting at this time |
|
#define SNIPER_STATIONARY_FADESTART 2.5f |
|
// After sitting still, remove from tactical and minimiap starting and finishing here |
|
#define SNIPER_STATIONARY_FADEFINISH 7.5f |
|
|
|
// Infiltrator Camouflage constants |
|
// # of seconds to go into/back into camo mode |
|
#define CAMO_ENABLETIME ( 3.0f ) |
|
// # of seconds to remove |
|
#define CAMO_REMOVETIME ( 1.0f ) |
|
// # of seconds to temporarily suppress |
|
#define CAMO_SUPPRESSTIME ( 1.0f ) |
|
|
|
// Outside this, exclude from PVS |
|
#define CAMO_OUTER_RADIUS ( 2048.0f ) |
|
// From here to outer, just alpha to 0 |
|
#define CAMO_INNER_RADIUS ( CAMO_OUTER_RADIUS / 2.0f ) |
|
// 75 % opacity at the inner_radius |
|
#define CAMO_INNER_ALPHA ( 192 ) |
|
// From here to inner fade alpha again and start using invis effect |
|
#define CAMO_INVIS_RADIUS ( CAMO_INNER_RADIUS / 2.0f ) |
|
|
|
// Infiltrator's phaseout duration |
|
#define INFILTRATOR_PHASEOUT_DURATION 30.0f |
|
// Time required to recharge |
|
#define INFILTRATOR_PHASEOUT_RECHARGETIME 30.0f |
|
|
|
// After sitting still, remove from tactical and minimiap starting at this time |
|
#define SNIPER_STATIONARY_FADESTART 2.5f |
|
// After sitting still, remove from tactical and minimiap starting and finishing here |
|
#define SNIPER_STATIONARY_FADEFINISH 7.5f |
|
|
|
|
|
//-------------------------------------------------------------------------- |
|
// ANIM STATEMACHINE DEFINES |
|
//-------------------------------------------------------------------------- |
|
// Sniper deploy node |
|
enum |
|
{ |
|
SNIPER_DEPLOY_START = 1, |
|
SNIPER_DEPLOY_IDLE, |
|
SNIPER_DEPLOY_LEAVE, |
|
}; |
|
|
|
//-------------------------------------------------------------------------- |
|
// COMBAT SHIELD |
|
//-------------------------------------------------------------------------- |
|
#define SHIELD_HITGROUP 1 |
|
|
|
// Length after raising the shield during which releasing the shield will cause a parry |
|
#define PARRY_DETECTION_TIME 0.5 |
|
// Length after a parry detection in which a parry can occur |
|
#define PARRY_OPPORTUNITY_LENGTH 0.3 |
|
// Length after a parry has finished before I can do anything again |
|
#define PARRY_VULNERABLE_TIME 0.5 |
|
|
|
//-------------------------------------------------------------------------- |
|
// SENTRYGUNS |
|
//-------------------------------------------------------------------------- |
|
// Time it takes to turtle / unturtle |
|
#define SENTRY_TURTLE_TIME 2.0 |
|
|
|
//-------------------------------------------------------------------------- |
|
// PORTABLE POWER GENERATOR - BUFF STATION |
|
//-------------------------------------------------------------------------- |
|
#define BUFF_STATION_MAX_PLAYERS 4 |
|
#define BUFF_STATION_MAX_PLAYER_BITS 3 |
|
#define BUFF_STATION_MAX_OBJECTS 3 |
|
#define BUFF_STATION_MAX_OBJECT_BITS 2 |
|
|
|
//-------------------------------------------------------------------------- |
|
// ADRENALIN |
|
//-------------------------------------------------------------------------- |
|
// Animation speed while in adrenalin |
|
#define ADRENALIN_ANIM_SPEED 1.5 |
|
|
|
//-------------------------------------------------------------------------- |
|
// PLASMA RIFLE |
|
//-------------------------------------------------------------------------- |
|
#define MAX_RIFLE_POWER 3.0 |
|
#define RIFLE_CHARGE_TIME 2.0 |
|
|
|
//-------------------------------------------------------------------------- |
|
// HUMAN POWER PACKS |
|
//-------------------------------------------------------------------------- |
|
#define MAX_OBJECTS_PER_PACK 3 |
|
|
|
//-------------------------------------------------------------------------- |
|
// Rally flag defines |
|
//-------------------------------------------------------------------------- |
|
|
|
#define RALLYFLAG_MINS Vector(-20, -20, 0) |
|
#define RALLYFLAG_MAXS Vector( 20, 20, 90) |
|
#define RALLYFLAG_RADIUS 512 |
|
#define RALLYFLAG_LIFETIME 30 |
|
#define RALLYFLAG_RATE 2 // Rate at which it looks for friendlies to rally |
|
#define RALLYFLAG_ADRENALIN_TIME 5 // Time an adrenalin rush lasts |
|
#define RALLYFLAG_MODEL "models/props/common/holo_banner/holo_banner.mdl" |
|
|
|
|
|
//-------------------------------------------------------------------------- |
|
// Resupply-related stuff |
|
//-------------------------------------------------------------------------- |
|
enum ResupplyBuyType_t |
|
{ |
|
RESUPPLY_BUY_AMMO = 0, |
|
RESUPPLY_BUY_HEALTH, |
|
RESUPPLY_BUY_GRENADES, |
|
RESUPPLY_BUY_ALL, |
|
|
|
RESUPPLY_BUY_TYPE_COUNT |
|
}; |
|
|
|
#define RESUPPLY_HEALTH_COST 20 |
|
#define RESUPPLY_AMMO_COST 5 |
|
#define RESUPPLY_GRENADES_COST 25 |
|
#define RESUPPLY_ALL_COST 50 |
|
#define RESUPPLY_ROCKET_COST 100 |
|
|
|
// Build animation events |
|
#define TF_OBJ_ENABLEBODYGROUP 6000 |
|
#define TF_OBJ_DISABLEBODYGROUP 6001 |
|
#define TF_OBJ_ENABLEALLBODYGROUPS 6002 |
|
#define TF_OBJ_DISABLEALLBODYGROUPS 6003 |
|
#define TF_OBJ_PLAYBUILDSOUND 6004 |
|
|
|
//-------------------------------------------------------------------------- |
|
// Class id |
|
//-------------------------------------------------------------------------- |
|
|
|
#include "tfclassdata_shared.h" |
|
|
|
|
|
//-------------------------------------------------------------------------- |
|
// |
|
// Class info tables. Any time a class is added or removed, this is where |
|
// generic data about each class is stored. |
|
// |
|
// The other things you need to add or remove for a class are: |
|
// |
|
// - A class derived from CPlayerClass. |
|
// - Class-specific accessors and data members functions in CTFMoveData. |
|
// - tf_gamemovement_chooser.h and CTFGameMovementChooser::CTFGameMovementChooser(). |
|
// - DEFINE_PRED_TYPEDESCRIPTION_PTR entries in c_basetfplayer.cpp |
|
// - Add class_X_health in skill1.cfg. |
|
// |
|
//-------------------------------------------------------------------------- |
|
|
|
class CPlayerClass; |
|
class CBaseTFPlayer; |
|
typedef CPlayerClass* (*PlayerClassAllocFn_Server)( CBaseTFPlayer *pPlayer ); |
|
|
|
class C_PlayerClass; |
|
class C_BaseTFPlayer; |
|
typedef C_PlayerClass* (*PlayerClassAllocFn_Client)( C_BaseTFPlayer *pPlayer ); |
|
|
|
|
|
class ConVar; |
|
|
|
|
|
class CTFClassInfo |
|
{ |
|
public: |
|
char *m_pClassName; |
|
|
|
// Objects that each class can build |
|
// OBJ_X, OBJ_Y ... terminated with OBJ_LAST. |
|
int *m_pClassObjects; |
|
|
|
// This is just to make stats gathering easy... which classes are in the game right now? |
|
bool m_pCurrentlyActive; |
|
|
|
PlayerClassAllocFn_Client m_pClientAlloc; // Only valid in client.dll |
|
PlayerClassAllocFn_Server m_pServerAlloc; // Only valid in the game dll |
|
|
|
ConVar *m_pMaxHealthCVar; // Only valid in game dll |
|
}; |
|
|
|
const CTFClassInfo* GetTFClassInfo( int i ); |
|
|
|
|
|
#if defined( CLIENT_DLL ) |
|
|
|
#define CAllPlayerClasses C_AllPlayerClasses |
|
#define PLAYER_CLASS_TYPE C_PlayerClass |
|
#define PLAYER_TYPE C_BaseTFPlayer |
|
|
|
EXTERN_RECV_TABLE( DT_AllPlayerClasses ); |
|
|
|
#else |
|
|
|
#define PLAYER_CLASS_TYPE CPlayerClass |
|
#define PLAYER_TYPE CBaseTFPlayer |
|
|
|
EXTERN_SEND_TABLE( DT_AllPlayerClasses ); |
|
|
|
#endif |
|
|
|
|
|
class PLAYER_TYPE; |
|
class PLAYER_CLASS_TYPE; |
|
|
|
// |
|
// The player object contains this on both the client and the server. |
|
// It holds a copy of each player class that can be used. |
|
// |
|
class CAllPlayerClasses // (#define as C_AllPlayerClasses on the client) |
|
{ |
|
public: |
|
CAllPlayerClasses( PLAYER_TYPE *pPlayer ); |
|
~CAllPlayerClasses(); |
|
|
|
PLAYER_CLASS_TYPE* GetPlayerClass( int iClass ); |
|
|
|
public: |
|
|
|
PLAYER_CLASS_TYPE* m_pClasses[ TFCLASS_CLASS_COUNT ]; |
|
}; |
|
|
|
//-------------------------------------------------------------------------- |
|
// Impact data |
|
//-------------------------------------------------------------------------- |
|
// This sucks |
|
#define NUM_WOOD_GIBS_SMALL 5 |
|
extern const char *ImpactHurtGibs_Wood_Small[ NUM_WOOD_GIBS_SMALL ]; |
|
|
|
#define PLAYER_MSG_PERSONAL_SHIELD 2 |
|
|
|
#endif // TF_SHAREDDEFS_H |
|
|
|
|