plugins/include/tf2.inc
author Ryan Stecker <voidedweasel@gmail.com>
Fri Dec 14 15:18:30 2012 -0500 (2012-12-14)
changeset 3705 23ac06d0c633
parent 3699 360b90d451c7
child 3707 bb0d8923ff6c
permissions -rw-r--r--
Fixed VoteMenuToAll stock adding bots to list (bug 5253, r=asherkin).
pred@1964
     1
/**
pred@1964
     2
 * vim: set ts=4 :
pred@1964
     3
 * =============================================================================
pred@1964
     4
 * SourceMod (C)2004-2008 AlliedModders LLC.  All rights reserved.
pred@1964
     5
 * =============================================================================
pred@1964
     6
 *
pred@1964
     7
 * This file is part of the SourceMod/SourcePawn SDK.
pred@1964
     8
 *
pred@1964
     9
 * This program is free software; you can redistribute it and/or modify it under
pred@1964
    10
 * the terms of the GNU General Public License, version 3.0, as published by the
pred@1964
    11
 * Free Software Foundation.
pred@1964
    12
 * 
pred@1964
    13
 * This program is distributed in the hope that it will be useful, but WITHOUT
pred@1964
    14
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
pred@1964
    15
 * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
pred@1964
    16
 * details.
pred@1964
    17
 *
pred@1964
    18
 * You should have received a copy of the GNU General Public License along with
pred@1964
    19
 * this program.  If not, see <http://www.gnu.org/licenses/>.
pred@1964
    20
 *
pred@1964
    21
 * As a special exception, AlliedModders LLC gives you permission to link the
pred@1964
    22
 * code of this program (as well as its derivative works) to "Half-Life 2," the
pred@1964
    23
 * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
pred@1964
    24
 * by the Valve Corporation.  You must obey the GNU General Public License in
pred@1964
    25
 * all respects for all other code used.  Additionally, AlliedModders LLC grants
pred@1964
    26
 * this exception to all derivative works.  AlliedModders LLC defines further
pred@1964
    27
 * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
pred@1964
    28
 * or <http://www.sourcemod.net/license.php>.
pred@1964
    29
 *
ds@1987
    30
 * Version: $Id$
pred@1964
    31
 */
pred@1964
    32
pred@1963
    33
#if defined _tf2_included
pred@1963
    34
 #endinput
pred@1963
    35
#endif
pred@1963
    36
#define _tf2_included
pred@1963
    37
skamonkey@2943
    38
#define TF_STUNFLAG_SLOWDOWN        (1 << 0)	// activates slowdown modifier
skamonkey@2943
    39
#define TF_STUNFLAG_BONKSTUCK       (1 << 1)	// bonk sound, stuck
skamonkey@2943
    40
#define TF_STUNFLAG_LIMITMOVEMENT   (1 << 2)	// disable forward/backward movement
skamonkey@2943
    41
#define TF_STUNFLAG_CHEERSOUND      (1 << 3)	// cheering sound
skamonkey@2943
    42
#define TF_STUNFLAG_NOSOUNDOREFFECT (1 << 5)	// no sound or particle
skamonkey@2943
    43
#define TF_STUNFLAG_THIRDPERSON     (1 << 6)	// panic animation
skamonkey@2943
    44
#define TF_STUNFLAG_GHOSTEFFECT     (1 << 7)	// ghost particles
skamonkey@2943
    45
skamonkey@2943
    46
#define TF_STUNFLAGS_LOSERSTATE     TF_STUNFLAG_SLOWDOWN|TF_STUNFLAG_NOSOUNDOREFFECT|TF_STUNFLAG_THIRDPERSON
skamonkey@2943
    47
#define TF_STUNFLAGS_GHOSTSCARE     TF_STUNFLAG_GHOSTEFFECT|TF_STUNFLAG_THIRDPERSON
skamonkey@2943
    48
#define TF_STUNFLAGS_SMALLBONK      TF_STUNFLAG_THIRDPERSON|TF_STUNFLAG_SLOWDOWN
skamonkey@2943
    49
#define TF_STUNFLAGS_NORMALBONK     TF_STUNFLAG_BONKSTUCK
skamonkey@2943
    50
#define TF_STUNFLAGS_BIGBONK        TF_STUNFLAG_CHEERSOUND|TF_STUNFLAG_BONKSTUCK
skamonkey@2943
    51
pred@1963
    52
enum TFClassType
pred@1963
    53
{
pred@1963
    54
	TFClass_Unknown = 0,
pred@1963
    55
	TFClass_Scout,
pred@1963
    56
	TFClass_Sniper,
pred@1963
    57
	TFClass_Soldier,
pred@1963
    58
	TFClass_DemoMan,
pred@1963
    59
	TFClass_Medic,
pred@1963
    60
	TFClass_Heavy,
pred@1963
    61
	TFClass_Pyro,
pred@1963
    62
	TFClass_Spy,
pred@1963
    63
	TFClass_Engineer
pred@2018
    64
};
pred@1963
    65
pred@1963
    66
enum TFTeam
pred@1963
    67
{
pred@1963
    68
	TFTeam_Unassigned = 0,
pred@1963
    69
	TFTeam_Spectator = 1,
pred@1963
    70
	TFTeam_Red = 2,
pred@1963
    71
	TFTeam_Blue = 3	
pred@2018
    72
};
pred@1963
    73
skamonkey@2939
    74
enum TFCond
skamonkey@2939
    75
{
skamonkey@2939
    76
	TFCond_Slowed = 0,
skamonkey@2939
    77
	TFCond_Zoomed,
skamonkey@2939
    78
	TFCond_Disguising,
skamonkey@2939
    79
	TFCond_Disguised,
skamonkey@2939
    80
	TFCond_Cloaked,
skamonkey@2939
    81
	TFCond_Ubercharged,
skamonkey@2939
    82
	TFCond_TeleportedGlow,
skamonkey@2939
    83
	TFCond_Taunting,
skamonkey@2939
    84
	TFCond_UberchargeFading,
skamonkey@3174
    85
	TFCond_Unknown1, //9
skamonkey@3174
    86
	TFCond_CloakFlicker = 9,
skamonkey@2939
    87
	TFCond_Teleporting,
skamonkey@2939
    88
	TFCond_Kritzkrieged,
skamonkey@3397
    89
	TFCond_Unknown2, //12
skamonkey@3397
    90
	TFCond_TmpDamageBonus = 12,
skamonkey@2939
    91
	TFCond_DeadRingered,
skamonkey@2939
    92
	TFCond_Bonked,
skamonkey@2939
    93
	TFCond_Dazed,
skamonkey@2939
    94
	TFCond_Buffed,
skamonkey@2939
    95
	TFCond_Charging,
skamonkey@2939
    96
	TFCond_DemoBuff,
skamonkey@3035
    97
	TFCond_CritCola,
skamonkey@3198
    98
	TFCond_InHealRadius,
skamonkey@2939
    99
	TFCond_Healing,
skamonkey@3198
   100
	TFCond_OnFire,
skamonkey@2939
   101
	TFCond_Overhealed,
skamonkey@3087
   102
	TFCond_Jarated,
skamonkey@3125
   103
	TFCond_Bleeding,
skamonkey@3125
   104
	TFCond_DefenseBuffed,
skamonkey@3215
   105
	TFCond_Milked,
laftrykung@3269
   106
	TFCond_MegaHeal,
skamonkey@3215
   107
	TFCond_RegenBuffed,
skamonkey@3308
   108
	TFCond_MarkedForDeath,
skamonkey@3397
   109
	TFCond_NoHealingDamageBuff,
skamonkey@3397
   110
	TFCond_SpeedBuffAlly,
skamonkey@3317
   111
	TFCond_HalloweenCritCandy,
laftrykung@3699
   112
	TFCond_CritCanteen,
skamonkey@3317
   113
	
laftrykung@3358
   114
	TFCond_CritHype = 36,
laftrykung@3358
   115
	TFCond_CritOnFirstBlood,
laftrykung@3358
   116
	TFCond_CritOnWin,
laftrykung@3358
   117
	TFCond_CritOnFlagCapture,
laftrykung@3358
   118
	TFCond_CritOnKill,
laftrykung@3506
   119
	TFCond_RestrictToMelee,
laftrykung@3506
   120
	
laftrykung@3699
   121
	TFCond_Reprogrammed = 43,
laftrykung@3699
   122
	TFCond_CritMmmph,
laftrykung@3506
   123
	TFCond_DefenseBuffMmmph,
laftrykung@3699
   124
	TFCond_FocusBuff,
laftrykung@3699
   125
	TFCond_DisguiseRemoved,
laftrykung@3699
   126
	TFCond_MarkedForDeathSilent,
laftrykung@3699
   127
	TFCond_DisguisedAsDispenser,
laftrykung@3699
   128
	TFCond_Sapped,
laftrykung@3699
   129
	TFCond_UberchargedHidden,
laftrykung@3699
   130
	TFCond_UberchargedCanteen,
laftrykung@3699
   131
	TFCond_HalloweenBombHead,
laftrykung@3699
   132
	TFCond_HalloweenThriller,
skamonkey@2942
   133
};
skamonkey@2939
   134
skamonkey@3056
   135
enum TFHoliday
skamonkey@3056
   136
{
skamonkey@3434
   137
	TFHoliday_Birthday = 1,
skamonkey@3056
   138
	TFHoliday_Halloween,
skamonkey@3456
   139
	TFHoliday_Christmas,
rbemrose@3576
   140
	TFHoliday_MeetThePyro,
rbemrose@3620
   141
	TFHoliday_MannVsMachine,
skamonkey@3426
   142
	TFHoliday_FullMoon,
skamonkey@3426
   143
	TFHoliday_HalloweenOrFullMoon,
skamonkey@3056
   144
};
skamonkey@3056
   145
erik@3093
   146
enum TFObjectType
erik@3093
   147
{
erik@3093
   148
	TFObject_CartDispenser = 0,
erik@3093
   149
	TFObject_Dispenser = 0,
erik@3093
   150
	TFObject_Teleporter = 1,
erik@3093
   151
	TFObject_Sentry = 2,
erik@3093
   152
	TFObject_Sapper = 3
erik@3093
   153
};
erik@3093
   154
erik@3093
   155
enum TFObjectMode
erik@3093
   156
{
erik@3093
   157
	TFObjectMode_None = 0,
erik@3093
   158
	TFObjectMode_Entrance = 0,
erik@3093
   159
	TFObjectMode_Exit = 1
erik@3093
   160
};
erik@3093
   161
fyrenmoo@2673
   162
/**
fyrenmoo@2673
   163
 * Sets a client on fire for 10 seconds.
fyrenmoo@2673
   164
 *
fyrenmoo@2673
   165
 * @param client		Player's index.
fyrenmoo@2673
   166
 * @noreturn
fyrenmoo@2673
   167
 * @error				Invalid client index, client not in game, or no mod support.
fyrenmoo@2673
   168
 */
fyrenmoo@2673
   169
native TF2_IgnitePlayer(client, target);
pred@1963
   170
pred@1963
   171
/**
pred@1963
   172
 * Respawns a client
pred@1963
   173
 *
pred@1963
   174
 * @param client		Player's index.
pred@1963
   175
 * @noreturn
pred@1963
   176
 * @error				Invalid client index, client not in game, or no mod support.
pred@1963
   177
 */
pred@1963
   178
native TF2_RespawnPlayer(client);
pred@1963
   179
pred@1963
   180
/**
skamonkey@2939
   181
 * Regenerates a client's health and ammunition
skamonkey@2939
   182
 *
skamonkey@2939
   183
 * @param client		Player's index.
skamonkey@2939
   184
 * @noreturn
skamonkey@2939
   185
 * @error				Invalid client index, client not in game, or no mod support.
skamonkey@2939
   186
 */
skamonkey@2939
   187
native TF2_RegeneratePlayer(client);
skamonkey@2939
   188
skamonkey@2939
   189
/**
skamonkey@2939
   190
 * Adds a condition to a player
skamonkey@2939
   191
 *
skamonkey@2939
   192
 * @param client		Player's index.
skamonkey@2939
   193
 * @param condition		Integer identifier of condition to apply.
skamonkey@2939
   194
 * @param duration		Duration of condition (does not apply to all conditions).
skamonkey@2939
   195
 * @noreturn
skamonkey@2939
   196
 * @error				Invalid client index, client not in game, or no mod support.
skamonkey@2939
   197
 */
skamonkey@2939
   198
native TF2_AddCondition(client, TFCond:condition, Float:duration);
skamonkey@2939
   199
skamonkey@2939
   200
/**
skamonkey@2939
   201
 * Removes a condition from a player
skamonkey@2939
   202
 *
skamonkey@2939
   203
 * @param client		Player's index.
skamonkey@2939
   204
 * @param condition		Integer identifier of condition to remove.
skamonkey@2939
   205
 * @noreturn
skamonkey@2939
   206
 * @error				Invalid client index, client not in game, or no mod support.
skamonkey@2939
   207
 */
skamonkey@2939
   208
native TF2_RemoveCondition(client, TFCond:condition);
skamonkey@2939
   209
skamonkey@2939
   210
/**
skamonkey@2939
   211
 * Enables/disables PowerPlay mode on a player.
skamonkey@2939
   212
 *
skamonkey@2939
   213
 * @param client		Player's index.
skamonkey@2939
   214
 * @param enabled		Whether to enable or disable PowerPlay on player.
skamonkey@2939
   215
 * @noreturn
skamonkey@2939
   216
 * @error				Invalid client index, client not in game, or no mod support.
skamonkey@2939
   217
 */
skamonkey@2939
   218
native TF2_SetPlayerPowerPlay(client, bool:enabled);
skamonkey@2939
   219
skamonkey@2939
   220
/**
pred@1963
   221
 * Disguises a client to the given model and team. Only has an effect on spies.
pred@1963
   222
 *
pred@1963
   223
 * Note: This only starts the disguise process and a delay occurs before the spy is fully disguised
pred@1963
   224
 *
pred@1963
   225
 * @param client		Player's index.
pred@1963
   226
 * @param team			Team to disguise the player as (only TFTeam_Red and TFTeam_Blue have an effect)
pred@1963
   227
 * @param class			TFClassType class to disguise the player as
skamonkey@3128
   228
 * @param target		Specific target player to disguise as (0 for any)
pred@1963
   229
 * @noreturn
pred@1963
   230
 * @error				Invalid client index, client not in game, or no mod support.
pred@1963
   231
 */
skamonkey@3128
   232
native TF2_DisguisePlayer(client, TFTeam:team, TFClassType:class, target=0);
pred@1963
   233
pred@1963
   234
/**
pred@1963
   235
 * Removes the current disguise from a client. Only has an effect on spies.
pred@1963
   236
 *
pred@1963
   237
 * @param client		Player's index.
pred@1963
   238
 * @noreturn
pred@1963
   239
 * @error				Invalid client index, client not in game, or no mod support.
pred@1963
   240
 */
pred@1963
   241
native TF2_RemovePlayerDisguise(client);
pred@1963
   242
pred@1963
   243
/**
skamonkey@2943
   244
 * Stuns a client
skamonkey@2943
   245
 *
skamonkey@2943
   246
 * @param client		Player's index.
skamonkey@2943
   247
 * @param float			Duration of stun.
skamonkey@2943
   248
 * @param float			Slowdown percent (as decimal, 0.00-1.00)
skamonkey@2943
   249
 *						(ignored if TF_STUNFLAG_SLOWDOWN is not set.
skamonkey@2943
   250
 * @param int			Stun flags.
skamonkey@2943
   251
 * @param attacker		Attacker's index (0 is allowed for world).
skamonkey@2943
   252
 * @noreturn
skamonkey@2943
   253
 */
skamonkey@2943
   254
native TF2_StunPlayer(client, Float:duration, Float:slowdown=0.0, stunflags, attacker=0);
skamonkey@2943
   255
skamonkey@2943
   256
/**
abkowald@3096
   257
 * Induces the bleed effect on a client
abkowald@3096
   258
 *
abkowald@3096
   259
 * @param client		Player's index.
skamonkey@3272
   260
 * @param attacker		Attacker's index.
abkowald@3096
   261
 * @param float			Duration of bleeding (in seconds).
abkowald@3096
   262
 * @noreturn
abkowald@3096
   263
 */
skamonkey@3272
   264
native TF2_MakeBleed(client, attacker, Float:duration);
abkowald@3096
   265
abkowald@3096
   266
/**
pred@1963
   267
 * Retrieves the entity index of the CPlayerResource entity
pred@1963
   268
 *
pred@1963
   269
 * @return				The current resource entity index.
pred@1963
   270
 */
pred@1963
   271
native TF2_GetResourceEntity();
pred@1963
   272
pred@1963
   273
/**
pred@1963
   274
 * Finds the TFClassType for a given class name.
pred@1963
   275
 *
pred@1963
   276
 * @param classname		A classname string such as "sniper" or "demoman"
pred@1963
   277
 * @return				A TFClassType constant.
pred@1963
   278
 */
pred@1963
   279
native TFClassType:TF2_GetClass(const String:classname[]);
pred@1963
   280
pred@1963
   281
/**
pred@1979
   282
 * Called on weapon fire to decide if the current shot should be critical.
pred@1979
   283
 * Return Plugin_Continue to let the original calculation or return a higher
pred@1979
   284
 * action to override the decision with the value of 'result'
pred@1979
   285
 *
pred@1979
   286
 * @note Since critical shots are also calculated client side any changes made with
pred@1979
   287
 *		 this will not show for the shooter. Projectile weapons such as the rocketlauncher
pred@1979
   288
 *		 and demoman weapons will show a critical bullet but no critical sound effect.
pred@1979
   289
 *		 Bullet hits should appear as expected.
pred@1979
   290
 *
pred@1979
   291
 * @param client		Client Index.
pred@1979
   292
 * @param weapon		Weapon entity Index.
pred@1979
   293
 * @param weaponname	Classname of the weapon.
pred@1979
   294
 * @param result		Buffer param for the result of the decision.
pred@1979
   295
 */
pred@1981
   296
forward Action:TF2_CalcIsAttackCritical(client, weapon, String:weaponname[], &bool:result);
pred@1979
   297
pred@1979
   298
/**
skamonkey@3426
   299
 * @deprecated		No longer called. Use TF2_OnIsHolidayActive.
skamonkey@3426
   300
 */
skamonkey@3426
   301
#pragma deprecated No longer called. Use TF2_OnIsHolidayActive.
skamonkey@3426
   302
forward Action:TF2_OnGetHoliday(&TFHoliday:holiday);
skamonkey@3426
   303
skamonkey@3426
   304
/**
skamonkey@3426
   305
 * Called at various times when the game checks to see if the given holiday is active.
skamonkey@3426
   306
 * Return Plugin_Continue to let the original calculation or return a higher
skamonkey@3426
   307
 * action to override the decision with the value of 'result'
skamonkey@3056
   308
 *
skamonkey@3426
   309
 * @param holiday		Holiday being checked.
skamonkey@3426
   310
 * @param result		Buffer param for the result of the decision.
skamonkey@3426
   311
 * @return				Plugin_Continue for original calculation, higher value to use 'result'.
skamonkey@3056
   312
 */
skamonkey@3426
   313
forward Action:TF2_OnIsHolidayActive(TFHoliday:holiday, &bool:result);
skamonkey@3056
   314
skamonkey@3056
   315
/**
tf2@3147
   316
 * Returns whether or not a client (Player) is in a duel.
tf2@3147
   317
 *
tf2@3147
   318
 * @param client    Client Index.
tf2@3147
   319
 * @return          Boolean of whether or not the client/player is dueling.
tf2@3147
   320
 */
tf2@3147
   321
native bool:TF2_IsPlayerInDuel(client);
tf2@3147
   322
tf2@3147
   323
/**
skamonkey@3233
   324
 * Called after a condition is added to a player
skamonkey@3233
   325
 *
skamonkey@3233
   326
 * @param client		Index of the client to which the conditon is being added.
skamonkey@3233
   327
 * @param condition     Condition that is being added.
skamonkey@3233
   328
 * @noreturn
skamonkey@3233
   329
 */
skamonkey@3332
   330
forward TF2_OnConditionAdded(client, TFCond:condition);
skamonkey@3233
   331
skamonkey@3233
   332
/**
skamonkey@3233
   333
 * Called after a condition is removed from a player
skamonkey@3233
   334
 *
skamonkey@3233
   335
 * @param client		Index of the client to which the condition is being removed.
skamonkey@3233
   336
 * @param condition		Condition that is being removed.
skamonkey@3233
   337
 * @noreturn
skamonkey@3233
   338
 */
skamonkey@3233
   339
forward TF2_OnConditionRemoved(client, TFCond:condition);
skamonkey@3233
   340
skamonkey@3233
   341
/**
crimson@3151
   342
 * Called when the server enters the Waiting for Players round state
crimson@3151
   343
 *
crimson@3151
   344
 * @noreturn
crimson@3151
   345
 */
crimson@3151
   346
forward TF2_OnWaitingForPlayersStart();
crimson@3151
   347
crimson@3151
   348
/**
crimson@3151
   349
 * Called when the server exits the Waiting for Players round state
crimson@3151
   350
 *
crimson@3151
   351
 * @noreturn
crimson@3151
   352
 */
crimson@3151
   353
forward TF2_OnWaitingForPlayersEnd();
crimson@3151
   354
crimson@3151
   355
/**
voidedweasel@3533
   356
 * Called when a player attempts to use a teleporter to decide if the player should be allowed to teleport.
voidedweasel@3533
   357
 * Return Plugin_Continue to let the original calculation or return a higher
voidedweasel@3533
   358
 * action to override the decision with the value of 'result'
voidedweasel@3533
   359
 *
voidedweasel@3533
   360
 * @param client		Client index.
voidedweasel@3533
   361
 * @param teleporter	Teleporter entity index.
voidedweasel@3533
   362
 * @param result		Buffer param for the result of the decision.
voidedweasel@3533
   363
 *						This is prepopulated with the game's original decision to let a player teleport.
voidedweasel@3533
   364
 * @return				Plugin_Continue for original calculation, higher value to use 'result'.
voidedweasel@3533
   365
 */
voidedweasel@3533
   366
forward Action:TF2_OnPlayerTeleport(client, teleporter, &bool:result);
voidedweasel@3533
   367
 
voidedweasel@3533
   368
/**
pred@1963
   369
 * Do not edit below this line!
pred@1963
   370
 */
pred@1963
   371
public Extension:__ext_tf2 = 
pred@1963
   372
{
pred@1963
   373
	name = "TF2 Tools",
pred@1963
   374
	file = "game.tf2.ext",
skamonkey@3028
   375
	autoload = 0,
pred@1963
   376
#if defined REQUIRE_EXTENSIONS
pred@1963
   377
	required = 1,
pred@1963
   378
#else
pred@1963
   379
	required = 0,
pred@1963
   380
#endif
pred@1963
   381
};
skamonkey@2976
   382
skamonkey@2976
   383
#if !defined REQUIRE_EXTENSIONS
skamonkey@2976
   384
public __ext_tf2_SetNTVOptional()
skamonkey@2976
   385
{
skamonkey@2976
   386
	MarkNativeAsOptional("TF2_IgnitePlayer");
skamonkey@2976
   387
	MarkNativeAsOptional("TF2_RespawnPlayer");
skamonkey@2976
   388
	MarkNativeAsOptional("TF2_RegeneratePlayer");
skamonkey@2976
   389
	MarkNativeAsOptional("TF2_AddCondition");
skamonkey@2976
   390
	MarkNativeAsOptional("TF2_RemoveCondition");
skamonkey@2976
   391
	MarkNativeAsOptional("TF2_SetPlayerPowerPlay");
skamonkey@2976
   392
	MarkNativeAsOptional("TF2_DisguisePlayer");
skamonkey@2976
   393
	MarkNativeAsOptional("TF2_RemovePlayerDisguise");
skamonkey@2976
   394
	MarkNativeAsOptional("TF2_StunPlayer");
skamonkey@3110
   395
	MarkNativeAsOptional("TF2_MakeBleed");
skamonkey@2976
   396
	MarkNativeAsOptional("TF2_GetResourceEntity");
skamonkey@2976
   397
	MarkNativeAsOptional("TF2_GetClass");
tf2@3147
   398
	MarkNativeAsOptional("TF2_IsPlayerInDuel");
skamonkey@2976
   399
}
skamonkey@2976
   400
#endif