plugins/include/tf2_stocks.inc
author Nicholas Hastings <skamonkey@gmail.com>
Sun Jan 16 20:25:44 2011 -0500 (2011-01-16)
changeset 3189 bfd5d66833ca
parent 3174 d4cd8f456a28
child 3191 352db0fc5c83
permissions -rw-r--r--
Updated customkill and deathflag defines in tf2_stocks (bug 4799, r=dvander).
milo@2566
     1
/**
milo@2566
     2
 * vim: set ts=4 :
milo@2566
     3
 * =============================================================================
milo@2566
     4
 * SourceMod (C)2004-2008 AlliedModders LLC.  All rights reserved.
milo@2566
     5
 * =============================================================================
milo@2566
     6
 *
milo@2566
     7
 * This file is part of the SourceMod/SourcePawn SDK.
milo@2566
     8
 *
milo@2566
     9
 * This program is free software; you can redistribute it and/or modify it under
milo@2566
    10
 * the terms of the GNU General Public License, version 3.0, as published by the
milo@2566
    11
 * Free Software Foundation.
milo@2566
    12
 * 
milo@2566
    13
 * This program is distributed in the hope that it will be useful, but WITHOUT
milo@2566
    14
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
milo@2566
    15
 * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
milo@2566
    16
 * details.
milo@2566
    17
 *
milo@2566
    18
 * You should have received a copy of the GNU General Public License along with
milo@2566
    19
 * this program.  If not, see <http://www.gnu.org/licenses/>.
milo@2566
    20
 *
milo@2566
    21
 * As a special exception, AlliedModders LLC gives you permission to link the
milo@2566
    22
 * code of this program (as well as its derivative works) to "Half-Life 2," the
milo@2566
    23
 * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
milo@2566
    24
 * by the Valve Corporation.  You must obey the GNU General Public License in
milo@2566
    25
 * all respects for all other code used.  Additionally, AlliedModders LLC grants
milo@2566
    26
 * this exception to all derivative works.  AlliedModders LLC defines further
milo@2566
    27
 * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
milo@2566
    28
 * or <http://www.sourcemod.net/license.php>.
milo@2566
    29
 *
milo@2566
    30
 * Version: $Id$
milo@2566
    31
 */
milo@2566
    32
milo@2566
    33
#if defined _tf2_stocks_included
milo@2566
    34
 #endinput
milo@2566
    35
#endif
milo@2566
    36
#define _tf2_stocks_included
milo@2566
    37
milo@2566
    38
#include <tf2>
milo@2566
    39
#include <sdktools>
milo@2566
    40
skamonkey@2943
    41
#define TF_CONDFLAG_NONE            0
skamonkey@2943
    42
#define TF_CONDFLAG_SLOWED          (1 << 0)
skamonkey@2943
    43
#define TF_CONDFLAG_ZOOMED          (1 << 1)
skamonkey@2943
    44
#define TF_CONDFLAG_DISGUISING      (1 << 2)
skamonkey@2943
    45
#define TF_CONDFLAG_DISGUISED       (1 << 3)
skamonkey@2943
    46
#define TF_CONDFLAG_CLOAKED         (1 << 4)
skamonkey@2943
    47
#define TF_CONDFLAG_UBERCHARGED     (1 << 5)
skamonkey@2943
    48
#define TF_CONDFLAG_TELEPORTGLOW    (1 << 6)
skamonkey@2943
    49
#define TF_CONDFLAG_TAUNTING        (1 << 7)
skamonkey@2943
    50
#define TF_CONDFLAG_UBERCHARGEFADE  (1 << 8)
skamonkey@3174
    51
#define TF_CONDFLAG_CLOAKFLICKER    (1 << 9)
skamonkey@2943
    52
#define TF_CONDFLAG_TELEPORTING     (1 << 10)
skamonkey@2943
    53
#define TF_CONDFLAG_KRITZKRIEGED    (1 << 11)
skamonkey@2943
    54
#define TF_CONDFLAG_DEADRINGERED    (1 << 13)
skamonkey@2943
    55
#define TF_CONDFLAG_BONKED          (1 << 14)
skamonkey@2943
    56
#define TF_CONDFLAG_DAZED           (1 << 15)
skamonkey@2943
    57
#define TF_CONDFLAG_BUFFED          (1 << 16)
skamonkey@2943
    58
#define TF_CONDFLAG_CHARGING        (1 << 17)
skamonkey@2943
    59
#define TF_CONDFLAG_DEMOBUFF        (1 << 18)
skamonkey@3044
    60
#define TF_CONDFLAG_CRITCOLA        (1 << 19)
skamonkey@3044
    61
#define TF_CONDFLAG_HEALING         (1 << 20)
skamonkey@3087
    62
#define TF_CONDFLAG_ONFIRE          (1 << 22)
skamonkey@3087
    63
#define TF_CONDFLAG_OVERHEALED      (1 << 23)
skamonkey@3087
    64
#define TF_CONDFLAG_JARATED         (1 << 24)
skamonkey@3087
    65
#define TF_CONDFLAG_BLEEDING        (1 << 25)
skamonkey@3125
    66
#define TF_CONDFLAG_DEFENSEBUFFED   (1 << 26)
skamonkey@3125
    67
#define TF_CONDFLAG_MILKED          (1 << 27)
skamonkey@2943
    68
skamonkey@2943
    69
#define TF_DEATHFLAG_KILLERDOMINATION   (1 << 0)
skamonkey@2943
    70
#define TF_DEATHFLAG_ASSISTERDOMINATION (1 << 1)
skamonkey@2943
    71
#define TF_DEATHFLAG_KILLERREVENGE      (1 << 2)
skamonkey@2943
    72
#define TF_DEATHFLAG_ASSISTERREVENGE    (1 << 3)
skamonkey@2943
    73
#define TF_DEATHFLAG_FIRSTBLOOD         (1 << 4)
skamonkey@2943
    74
#define TF_DEATHFLAG_DEADRINGER         (1 << 5)
skamonkey@3189
    75
#define TF_DEATHFLAG_INTERRUPTED        (1 << 6)
skamonkey@3189
    76
#define TF_DEATHFLAG_GIBBED             (1 << 7)
skamonkey@2943
    77
skamonkey@3125
    78
// Custom kill identifiers for the customkill property on the player_death event
skamonkey@3125
    79
enum {
skamonkey@3126
    80
	TF_CUSTOM_HEADSHOT = 1,
skamonkey@3126
    81
	TF_CUSTOM_BACKSTAB,
skamonkey@3126
    82
	TF_CUSTOM_BURNING,
skamonkey@3126
    83
	TF_CUSTOM_WRENCH_FIX,
skamonkey@3126
    84
	TF_CUSTOM_MINIGUN,
skamonkey@3126
    85
	TF_CUSTOM_SUICIDE,
skamonkey@3126
    86
	TF_CUSTOM_TAUNT_HADOUKEN,
skamonkey@3126
    87
	TF_CUSTOM_BURNING_FLARE,
skamonkey@3126
    88
	TF_CUSTOM_TAUNT_HIGH_NOON,
skamonkey@3126
    89
	TF_CUSTOM_TAUNT_GRAND_SLAM,
skamonkey@3126
    90
	TF_CUSTOM_PENETRATE_MY_TEAM,
skamonkey@3126
    91
	TF_CUSTOM_PENETRATE_ALL_PLAYERS,
skamonkey@3126
    92
	TF_CUSTOM_TAUNT_FENCING,
skamonkey@3126
    93
	TF_CUSTOM_PENETRATE_HEADSHOT,
skamonkey@3126
    94
	TF_CUSTOM_TELEFRAG,
skamonkey@3126
    95
	TF_CUSTOM_TAUNT_ARROW_STAB,
skamonkey@3126
    96
	TF_CUSTOM_BURNING_ARROW,
skamonkey@3126
    97
	TF_CUSTOM_FLYINGBURN,
skamonkey@3126
    98
	TF_CUSTOM_PUMPKIN_BOMB,
skamonkey@3126
    99
	TF_CUSTOM_DECAPITATION,
skamonkey@3126
   100
	TF_CUSTOM_TAUNT_GRENADE,
skamonkey@3126
   101
	TF_CUSTOM_BASEBALL,
skamonkey@3126
   102
	TF_CUSTOM_CHARGE_IMPACT,
skamonkey@3126
   103
	TF_CUSTOM_TAUNT_BARBARIAN_SWING,
skamonkey@3126
   104
	TF_CUSTOM_AIR_STICKY_BURST,
skamonkey@3126
   105
	TF_CUSTOM_DEFENSIVE_STICKY,
skamonkey@3126
   106
	TF_CUSTOM_PICKAXE,
skamonkey@3126
   107
	TF_CUSTOM_ROCKET_DIRECTHIT,
skamonkey@3126
   108
	TF_CUSTOM_TAUNT_UBERSLICE,
skamonkey@3126
   109
	TF_CUSTOM_PLAYER_SENTRY,
skamonkey@3126
   110
	TF_CUSTOM_STANDARD_STICKY,
skamonkey@3126
   111
	TF_CUSTOM_SHOTGUN_REVENGE_CRIT,
skamonkey@3126
   112
	TF_CUSTOM_TAUNT_ENGINEER_SMASH,
skamonkey@3126
   113
	TF_CUSTOM_BLEEDING,
skamonkey@3126
   114
	TF_CUSTOM_GOLD_WRENCH,
skamonkey@3126
   115
	TF_CUSTOM_CARRIED_BUILDING,
skamonkey@3126
   116
	TF_CUSTOM_COMBO_PUNCH,
skamonkey@3126
   117
	TF_CUSTOM_TAUNT_ENGINEER_ARM,
skamonkey@3144
   118
	TF_CUSTOM_FISH_KILL,
skamonkey@3144
   119
	TF_CUSTOM_TRIGGER_HURT,
skamonkey@3189
   120
	TF_CUSTOM_DECAPITATION_BOSS,
skamonkey@3189
   121
	TF_CUSTOM_STICKBOMB_EXPLOSION
skamonkey@3125
   122
};
skamonkey@3125
   123
skamonkey@3125
   124
// Weapon codes as used in some events, such as player_death
skamonkey@3125
   125
// (not to be confused with Item Definition Indexes)
skamonkey@3125
   126
enum {
skamonkey@3125
   127
	TF_WEAPON_NONE = 0,
skamonkey@3125
   128
	TF_WEAPON_BAT,
skamonkey@3125
   129
	TF_WEAPON_BAT_WOOD,
skamonkey@3125
   130
	TF_WEAPON_BOTTLE,
skamonkey@3125
   131
	TF_WEAPON_FIREAXE,
skamonkey@3125
   132
	TF_WEAPON_CLUB,
skamonkey@3125
   133
	TF_WEAPON_CROWBAR,
skamonkey@3125
   134
	TF_WEAPON_KNIFE,
skamonkey@3125
   135
	TF_WEAPON_FISTS,
skamonkey@3125
   136
	TF_WEAPON_SHOVEL,
skamonkey@3125
   137
	TF_WEAPON_WRENCH,
skamonkey@3125
   138
	TF_WEAPON_BONESAW,
skamonkey@3125
   139
	TF_WEAPON_SHOTGUN_PRIMARY,
skamonkey@3125
   140
	TF_WEAPON_SHOTGUN_SOLDIER,
skamonkey@3125
   141
	TF_WEAPON_SHOTGUN_HWG,
skamonkey@3125
   142
	TF_WEAPON_SHOTGUN_PYRO,
skamonkey@3125
   143
	TF_WEAPON_SCATTERGUN,
skamonkey@3125
   144
	TF_WEAPON_SNIPERRIFLE,
skamonkey@3125
   145
	TF_WEAPON_MINIGUN,
skamonkey@3125
   146
	TF_WEAPON_SMG,
skamonkey@3125
   147
	TF_WEAPON_SYRINGEGUN_MEDIC,
skamonkey@3125
   148
	TF_WEAPON_TRANQ,
skamonkey@3125
   149
	TF_WEAPON_ROCKETLAUNCHER,
skamonkey@3125
   150
	TF_WEAPON_GRENADELAUNCHER,
skamonkey@3125
   151
	TF_WEAPON_PIPEBOMBLAUNCHER,
skamonkey@3125
   152
	TF_WEAPON_FLAMETHROWER,
skamonkey@3125
   153
	TF_WEAPON_GRENADE_NORMAL,
skamonkey@3125
   154
	TF_WEAPON_GRENADE_CONCUSSION,
skamonkey@3125
   155
	TF_WEAPON_GRENADE_NAIL,
skamonkey@3125
   156
	TF_WEAPON_GRENADE_MIRV,
skamonkey@3125
   157
	TF_WEAPON_GRENADE_MIRV_DEMOMAN,
skamonkey@3125
   158
	TF_WEAPON_GRENADE_NAPALM,
skamonkey@3125
   159
	TF_WEAPON_GRENADE_GAS,
skamonkey@3125
   160
	TF_WEAPON_GRENADE_EMP,
skamonkey@3125
   161
	TF_WEAPON_GRENADE_CALTROP,
skamonkey@3125
   162
	TF_WEAPON_GRENADE_PIPEBOMB,
skamonkey@3125
   163
	TF_WEAPON_GRENADE_SMOKE_BOMB,
skamonkey@3125
   164
	TF_WEAPON_GRENADE_HEAL,
skamonkey@3125
   165
	TF_WEAPON_GRENADE_STUNBALL,
skamonkey@3125
   166
	TF_WEAPON_GRENADE_JAR,
skamonkey@3130
   167
	TF_WEAPON_GRENADE_JAR_MILK,
skamonkey@3125
   168
	TF_WEAPON_PISTOL,
skamonkey@3125
   169
	TF_WEAPON_PISTOL_SCOUT,
skamonkey@3125
   170
	TF_WEAPON_REVOLVER,
skamonkey@3125
   171
	TF_WEAPON_NAILGUN,
skamonkey@3125
   172
	TF_WEAPON_PDA,
skamonkey@3125
   173
	TF_WEAPON_PDA_ENGINEER_BUILD,
skamonkey@3125
   174
	TF_WEAPON_PDA_ENGINEER_DESTROY,
skamonkey@3125
   175
	TF_WEAPON_PDA_SPY,
skamonkey@3125
   176
	TF_WEAPON_BUILDER,
skamonkey@3125
   177
	TF_WEAPON_MEDIGUN,
skamonkey@3125
   178
	TF_WEAPON_GRENADE_MIRVBOMB,
skamonkey@3125
   179
	TF_WEAPON_FLAMETHROWER_ROCKET,
skamonkey@3125
   180
	TF_WEAPON_GRENADE_DEMOMAN,
skamonkey@3125
   181
	TF_WEAPON_SENTRY_BULLET,
skamonkey@3125
   182
	TF_WEAPON_SENTRY_ROCKET,
skamonkey@3125
   183
	TF_WEAPON_DISPENSER,
skamonkey@3125
   184
	TF_WEAPON_INVIS,
skamonkey@3125
   185
	TF_WEAPON_FLAREGUN,
skamonkey@3125
   186
	TF_WEAPON_LUNCHBOX,
skamonkey@3125
   187
	TF_WEAPON_JAR,
skamonkey@3125
   188
	TF_WEAPON_COMPOUND_BOW,
skamonkey@3125
   189
	TF_WEAPON_BUFF_ITEM,
skamonkey@3125
   190
	TF_WEAPON_PUMPKIN_BOMB,
skamonkey@3125
   191
	TF_WEAPON_SWORD,
skamonkey@3126
   192
	TF_WEAPON_DIRECTHIT,
skamonkey@3125
   193
	TF_WEAPON_LIFELINE,
skamonkey@3125
   194
	TF_WEAPON_LASER_POINTER,
skamonkey@3125
   195
	TF_WEAPON_DISPENSER_GUN,
skamonkey@3125
   196
	TF_WEAPON_SENTRY_REVENGE,
skamonkey@3125
   197
	TF_WEAPON_JAR_MILK,
skamonkey@3125
   198
	TF_WEAPON_HANDGUN_SCOUT_PRIMARY,
skamonkey@3174
   199
	TF_WEAPON_BAT_FISH,
skamonkey@3174
   200
	TF_WEAPON_CROSSBOW,
skamonkey@3174
   201
	TF_WEAPON_STICKBOMB
skamonkey@3125
   202
};
skamonkey@3125
   203
skamonkey@3125
   204
// Identifiers for the eventtype property on the teamplay_flag_event event
skamonkey@3125
   205
enum {
skamonkey@3125
   206
	TF_FLAGEVENT_PICKEDUP = 1,
skamonkey@3125
   207
	TF_FLAGEVENT_CAPTURED,
skamonkey@3125
   208
	TF_FLAGEVENT_DEFENDED,
skamonkey@3125
   209
	TF_FLAGEVENT_DROPPED
skamonkey@3125
   210
};
skamonkey@3125
   211
milo@2566
   212
enum TFResourceType
milo@2566
   213
{
milo@2566
   214
	TFResource_Ping,
milo@2566
   215
	TFResource_Score,
milo@2566
   216
	TFResource_Deaths,
milo@2566
   217
	TFResource_TotalScore, 
milo@2566
   218
	TFResource_Captures,
milo@2566
   219
	TFResource_Defenses,
milo@2566
   220
	TFResource_Dominations,
milo@2566
   221
	TFResource_Revenge,
milo@2566
   222
	TFResource_BuildingsDestroyed, 
milo@2566
   223
	TFResource_Headshots,
milo@2566
   224
	TFResource_Backstabs,
milo@2566
   225
	TFResource_HealPoints,
milo@2566
   226
	TFResource_Invulns,
milo@2566
   227
	TFResource_Teleports,
milo@2566
   228
	TFResource_ResupplyPoints,
milo@2566
   229
	TFResource_KillAssists,
milo@2566
   230
	TFResource_MaxHealth,
milo@2566
   231
	TFResource_PlayerClass
milo@2566
   232
};
milo@2566
   233
milo@2566
   234
static const String:TFResourceNames[TFResourceType][] =
milo@2566
   235
{
milo@2566
   236
	"m_iPing",
milo@2566
   237
	"m_iScore",
milo@2566
   238
	"m_iDeaths",
milo@2566
   239
	"m_iTotalScore",
milo@2566
   240
	"m_iCaptures",
milo@2566
   241
	"m_iDefenses",
milo@2566
   242
	"m_iDominations",
milo@2566
   243
	"m_iRevenge",
milo@2566
   244
	"m_iBuildingsDestroyed",
milo@2566
   245
	"m_iHeadshots",
milo@2566
   246
	"m_iBackstabs",
milo@2566
   247
	"m_iHealPoints",
milo@2566
   248
	"m_iInvulns",
milo@2566
   249
	"m_iTeleports",
milo@2566
   250
	"m_iResupplyPoints",
milo@2566
   251
	"m_iKillAssists",
milo@2566
   252
	"m_iMaxHealth",
milo@2566
   253
	"m_iPlayerClass"
milo@2566
   254
};
milo@2566
   255
milo@2566
   256
/**
milo@2566
   257
 * Get's a Clients current class.
milo@2566
   258
 *
milo@2566
   259
 * @param client		Player's index.
milo@2566
   260
 * @return				Current TFClassType of player.
milo@2566
   261
 * @error				Invalid client index.
milo@2566
   262
 */
milo@2566
   263
stock TFClassType:TF2_GetPlayerClass(client)
milo@2566
   264
{
milo@2566
   265
	return TFClassType:GetEntProp(client, Prop_Send, "m_iClass");
milo@2566
   266
}
milo@2566
   267
milo@2566
   268
/**
milo@2566
   269
 * Set's a Clients class.
milo@2566
   270
 *
milo@2566
   271
 * Note: If setting player class in a player spawn hook weapons should be set to false.
milo@2566
   272
 *
milo@2566
   273
 * @param client		Player's index.
milo@2566
   274
 * @param class			TFClassType class symbol.
milo@2566
   275
 * @param weapons		This paramater is ignored.
milo@2566
   276
 * @param persistant	If true changes the players desired class so the change stays after death.
milo@2566
   277
 * @noreturn
milo@2566
   278
 * @error				Invalid client index.
milo@2566
   279
 */
milo@2566
   280
stock TF2_SetPlayerClass(client, TFClassType:class, bool:weapons=true, bool:persistant=true)
milo@2566
   281
{
milo@2566
   282
	SetEntProp(client, Prop_Send, "m_iClass", _:class);
milo@2566
   283
	
milo@2566
   284
	if (persistant)
milo@2566
   285
	{
milo@2566
   286
		SetEntProp(client, Prop_Send, "m_iDesiredPlayerClass", _:class);
milo@2566
   287
	}
milo@2566
   288
}
milo@2566
   289
milo@2566
   290
/**
milo@2566
   291
 * Retrieves client data from the resource entity
milo@2566
   292
 *
milo@2566
   293
 * @param client		Player's index.
milo@2566
   294
 * @param type			ResourceType constant
milo@2566
   295
 * @return				Value or -1 on failure.
milo@2566
   296
 * @error				Invalid client index, client not in game or failed to find resource entity.
milo@2566
   297
 */
milo@2566
   298
stock TF2_GetPlayerResourceData(client, TFResourceType:type)
milo@2566
   299
{
milo@2566
   300
	if (!IsClientConnected(client))
milo@2566
   301
	{
milo@2566
   302
		return -1;	
milo@2566
   303
	}
milo@2566
   304
	
milo@2566
   305
	new offset = FindSendPropInfo("CTFPlayerResource", TFResourceNames[type]);
milo@2566
   306
		
milo@2566
   307
	if (offset < 1)
milo@2566
   308
	{
milo@2566
   309
		return -1;	
milo@2566
   310
	}
milo@2566
   311
				
milo@2566
   312
	new entity = TF2_GetResourceEntity();
milo@2566
   313
	
milo@2566
   314
	if (entity == -1)
milo@2566
   315
	{
milo@2566
   316
		return -1;
milo@2566
   317
	}
milo@2566
   318
	
milo@2566
   319
	return GetEntData(entity, offset + (client*4));
milo@2566
   320
}
milo@2566
   321
milo@2566
   322
/**
milo@2566
   323
 * Sets client data in the resource entity
milo@2566
   324
 *
milo@2566
   325
 * Note: The game overwrites these values every frame, so changing them will have very little effect.
milo@2566
   326
 *
milo@2566
   327
 * @param client		Player's index.
milo@2566
   328
 * @param type			ResourceType constant
milo@2566
   329
 * @param value			Value to set.
milo@2566
   330
 * @return				Value or -1 on failure.
milo@2566
   331
 * @error				Invalid client index, client not in game or failed to find resource entity.
milo@2566
   332
 */
milo@2566
   333
stock bool:TF2_SetPlayerResourceData(client, TFResourceType:type, any:value)
milo@2566
   334
{
milo@2566
   335
	if (!IsClientConnected(client))
milo@2566
   336
	{
milo@2566
   337
		return false;	
milo@2566
   338
	}
milo@2566
   339
	
milo@2566
   340
	new offset = FindSendPropInfo("CTFPlayerResource", TFResourceNames[type]);
milo@2566
   341
						
milo@2566
   342
	if (offset < 1)
milo@2566
   343
	{
milo@2566
   344
		return false;	
milo@2566
   345
	}
milo@2566
   346
				
milo@2566
   347
	new entity = TF2_GetResourceEntity();
milo@2566
   348
	
milo@2566
   349
	if (entity == -1)
milo@2566
   350
	{
milo@2566
   351
		return false;	
milo@2566
   352
	}
milo@2566
   353
	
milo@2566
   354
	SetEntData(entity, offset + (client*4), value);
milo@2566
   355
	
milo@2566
   356
	return true;	
milo@2566
   357
}
milo@2566
   358
milo@2566
   359
/**
milo@2566
   360
 * Removes all weapons from a client's weapon slot
milo@2566
   361
 *
milo@2566
   362
 * @param client		Player's index.
milo@2566
   363
 * @param slot			Slot index (0-5)
milo@2566
   364
 * @noreturn
milo@2566
   365
 * @error				Invalid client, invalid slot or lack of mod support
milo@2566
   366
 */
milo@2566
   367
stock TF2_RemoveWeaponSlot(client, slot)
milo@2566
   368
{
milo@2566
   369
	new weaponIndex;
milo@2566
   370
	while ((weaponIndex = GetPlayerWeaponSlot(client, slot)) != -1)
milo@2566
   371
	{
milo@2566
   372
		RemovePlayerItem(client, weaponIndex);
milo@2566
   373
		RemoveEdict(weaponIndex);
milo@2566
   374
	}
milo@2566
   375
}
milo@2566
   376
milo@2566
   377
/**
milo@2566
   378
 * Removes all weapons from a client
milo@2566
   379
 *
milo@2566
   380
 * @param client		Player's index.
milo@2566
   381
 * @noreturn
milo@2566
   382
 */
milo@2566
   383
stock TF2_RemoveAllWeapons(client)
milo@2566
   384
{
milo@2566
   385
	for (new i = 0; i <= 5; i++)
milo@2566
   386
	{
milo@2566
   387
		TF2_RemoveWeaponSlot(client, i);
milo@2566
   388
	}
milo@2566
   389
}
milo@2566
   390
skamonkey@2943
   391
/**
skamonkey@2943
   392
 * Gets a player's condition bits
skamonkey@2943
   393
 *
skamonkey@2943
   394
 * @param client		Player's index.
skamonkey@2943
   395
 * @return				Player's condition bits
skamonkey@2943
   396
 */
skamonkey@2943
   397
stock TF2_GetPlayerConditionFlags(client)
skamonkey@2943
   398
{
skamonkey@3163
   399
	return GetEntProp(client, Prop_Send, "m_nPlayerCond")|GetEntProp(client, Prop_Send, "_condition_bits");
skamonkey@2943
   400
}
erik@3093
   401
erik@3093
   402
/**
erik@3093
   403
 * Gets an entity's object type.
erik@3093
   404
 *
erik@3093
   405
 * @param entity		Entity index.
erik@3093
   406
 * @return				Current TFObjectType of entity.
erik@3093
   407
 * @error				Invalid entity index.
erik@3093
   408
 */
erik@3093
   409
stock TFObjectType:TF2_GetObjectType(entity)
erik@3093
   410
{
erik@3093
   411
	new offset = GetEntSendPropOffs(entity, "m_iObjectType");
erik@3093
   412
	
erik@3093
   413
	if (offset <= 0)
erik@3093
   414
	{
erik@3093
   415
		ThrowError("Entity index %d is not an object", entity);
erik@3093
   416
	}
erik@3093
   417
	
erik@3093
   418
	return TFObjectType:GetEntData(entity, offset);
erik@3093
   419
}
erik@3093
   420
erik@3093
   421
/**
erik@3093
   422
 * Gets an entity's object mode.
erik@3093
   423
 *
erik@3093
   424
 * @param entity		Entity index.
erik@3093
   425
 * @return				Current TFObjectMode of entity.
erik@3093
   426
 * @error				Invalid entity index.
erik@3093
   427
 */
erik@3093
   428
stock TFObjectMode:TF2_GetObjectMode(entity)
erik@3093
   429
{
erik@3093
   430
	new offset = GetEntSendPropOffs(entity, "m_iObjectMode");
erik@3093
   431
	
erik@3093
   432
	if (offset <= 0)
erik@3093
   433
	{
erik@3093
   434
		ThrowError("Entity index %d is not an object", entity);
erik@3093
   435
	}
erik@3093
   436
	
erik@3093
   437
	return TFObjectMode:GetEntData(entity, offset);
erik@3093
   438
}