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.
664 lines
21 KiB
664 lines
21 KiB
![]()
4 years ago
|
//========= 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
|
||
|
|