mirror of
https://github.com/nillerusr/source-engine.git
synced 2026-08-14 12:46:58 +00:00
1
This commit is contained in:
@@ -0,0 +1,663 @@
|
||||
//========= 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
|
||||
|
||||
Reference in New Issue
Block a user