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