#pragma once // Uncomment to enable buggy/experimental settings. //#define EXPERIMENTAL_SETTINGS #include #include /* generic constants */ #define LIFE_ALIVE 0 typedef unsigned long long VPANEL; typedef unsigned long long HFont; class IClientMode; class ILauncherMgr; class ICommandLine; class KeyValues; class CBaseClientState; class CGlowObjectManager; /* function prototypes */ typedef void* (*CreateInterfaceFn)(const char*, int*); typedef IClientMode* (*GetClientModeFn)(void); typedef CGlowObjectManager* (*GlowObjectManagerFn)(void); typedef bool (*MsgFunc_ServerRankRevealAllFn)(float*); typedef void (*SendClanTagFn)(const char*, const char*); typedef void (*IsReadyCallbackFn)(void*); typedef ILauncherMgr* (*ILauncherMgrCreateFn)(void); typedef void (*StartDrawingFn)(void*); typedef void (*FinishDrawingFn)(void*); typedef CBaseClientState* (*GetLocalClientFn)(int); typedef bool (*LineGoesThroughSmokeFn)(Vector, Vector, int16_t); typedef void (*InitKeyValuesFn)(KeyValues*, const char*); typedef void (*LoadFromBufferFn)(KeyValues*, const char*, const char*, void*, const char*, void*); typedef ICommandLine* (*CommandLineFn)(void); // typedef void (*RandomSeedFn)(int); // typedef float (*RandomFloatFn)(float, float); // typedef float (*RandomFloatExpFn)(float, float, float); // typedef int (*RandomIntFn)(int, int); // typedef float (*RandomGaussianFloatFn)(float, float); typedef bool (*SetNamedSkyBoxFn)(const char*); enum class TeamID : int { TEAM_UNASSIGNED, TEAM_SPECTATOR, TEAM_TERRORIST, TEAM_COUNTER_TERRORIST, }; enum class FontFeature : int { FONT_FEATURE_ANTIALIASED_FONTS = 1, FONT_FEATURE_DROPSHADOW_FONTS = 2, FONT_FEATURE_OUTLINE_FONTS = 6 }; enum class FontFlags : int { FONTFLAG_NONE = 0, FONTFLAG_ITALIC = 0x1, FONTFLAG_UNDERLINE = 0x2, FONTFLAG_STRIKEOUT = 0x4, FONTFLAG_SYMBOL = 0x8, FONTFLAG_ANTIALIAS = 0x10, FONTFLAG_GAUSSIANBLUR = 0x20, FONTFLAG_ROTARY = 0x40, FONTFLAG_DROPSHADOW = 0x80, FONTFLAG_ADDITIVE = 0x100, FONTFLAG_OUTLINE = 0x200, FONTFLAG_CUSTOM = 0x400, FONTFLAG_BITMAP = 0x800, }; enum class FontDrawType_t : int { // Use the "additive" value from the scheme file FONT_DRAW_DEFAULT = 0, // Overrides FONT_DRAW_NONADDITIVE, FONT_DRAW_ADDITIVE, FONT_DRAW_TYPE_COUNT = 2, }; enum class ClientFrameStage_t : int { FRAME_UNDEFINED = -1, FRAME_START, FRAME_NET_UPDATE_START, FRAME_NET_UPDATE_POSTDATAUPDATE_START, FRAME_NET_UPDATE_POSTDATAUPDATE_END, FRAME_NET_UPDATE_END, FRAME_RENDER_START, FRAME_RENDER_END }; enum class ObserverMode_t : int { OBS_MODE_NONE = 0, OBS_MODE_DEATHCAM = 1, OBS_MODE_FREEZECAM = 2, OBS_MODE_FIXED = 3, OBS_MODE_IN_EYE = 4, OBS_MODE_CHASE = 5, OBS_MODE_ROAMING = 6 }; enum class ItemDefinitionIndex : int { INVALID = -1, WEAPON_DEAGLE = 1, WEAPON_ELITE = 2, WEAPON_FIVESEVEN = 3, WEAPON_GLOCK = 4, WEAPON_AK47 = 7, WEAPON_AUG = 8, WEAPON_AWP = 9, WEAPON_FAMAS = 10, WEAPON_G3SG1 = 11, WEAPON_GALILAR = 13, WEAPON_M249 = 14, WEAPON_M4A1 = 16, WEAPON_MAC10 = 17, WEAPON_P90 = 19, WEAPON_UMP45 = 24, WEAPON_XM1014 = 25, WEAPON_BIZON = 26, WEAPON_MAG7 = 27, WEAPON_NEGEV = 28, WEAPON_SAWEDOFF = 29, WEAPON_TEC9 = 30, WEAPON_TASER = 31, WEAPON_HKP2000 = 32, WEAPON_MP7 = 33, WEAPON_MP9 = 34, WEAPON_NOVA = 35, WEAPON_P250 = 36, WEAPON_SCAR20 = 38, WEAPON_SG556 = 39, WEAPON_SSG08 = 40, WEAPON_KNIFE = 42, WEAPON_FLASHBANG = 43, WEAPON_HEGRENADE = 44, WEAPON_SMOKEGRENADE = 45, WEAPON_MOLOTOV = 46, WEAPON_DECOY = 47, WEAPON_INCGRENADE = 48, WEAPON_C4 = 49, WEAPON_KNIFE_T = 59, WEAPON_M4A1_SILENCER = 60, WEAPON_USP_SILENCER = 61, WEAPON_CZ75A = 63, WEAPON_REVOLVER = 64, WEAPON_KNIFE_BAYONET = 500, WEAPON_KNIFE_FLIP = 505, WEAPON_KNIFE_GUT = 506, WEAPON_KNIFE_KARAMBIT = 507, WEAPON_KNIFE_M9_BAYONET = 508, WEAPON_KNIFE_TACTICAL = 509, WEAPON_KNIFE_FALCHION = 512, WEAPON_KNIFE_SURVIVAL_BOWIE = 514, WEAPON_KNIFE_BUTTERFLY = 515, WEAPON_KNIFE_PUSH = 516, GLOVE_STUDDED_BLOODHOUND = 5027, GLOVE_T_SIDE = 5028, GLOVE_CT_SIDE = 5029, GLOVE_SPORTY = 5030, GLOVE_SLICK = 5031, GLOVE_LEATHER_WRAP = 5032, GLOVE_MOTORCYCLE = 5033, GLOVE_SPECIALIST = 5034 }; enum class ModelType : int // Something I made up { // name, numOfBones, mdl file. // FBI - 89 (player/custom_player/legacy/ctm_fbi_variantd.mdl) // GIGN - 93 (player/custom_player/legacy/ctm_gign_variantb.mdl) // GSG - 89 (player/custom_player/legacy/ctm_gsg9.mdl) // IDF - 94 (player/custom_player/legacy/ctm_idf_variantd.mdl) // SAS - 98 (player/custom_player/legacy/ctm_sas_varianta.mdl) // SEALS - 89 (player/custom_player/legacy/ctm_st6_variantc.mdl) // SWAT - 91 (player/custom_player/legacy/ctm_swat_varianta.mdl) // Anarchists - 84 (player/custom_player/legacy/tm_anarchist_varianta.mdl) // Balkan - 86 (player/custom_player/legacy/tm_balkan_variantc.mdl) // Leet krew - 84 (player/custom_player/legacy/tm_leet_varianta.mdl) // Leet krew 2- 85 (player/custom_player/legacy/tm_leet_variantD.mdl) // Phoenix - 86 (player/custom_player/legacy/tm_phoenix_variantc.mdl) // Professionals - 91 (player/custom_player/legacy/tm_professional_var3.mdl) // Separatists - 86 (player/custom_player/legacy/tm_separatist_variantd.mdl) UNKNOWN = -1, FBI = 0, GIGN, GSG, IDF, SAS, SEALS, SWAT, ANARCHIST, BALKAN, LEETKREW, LEETKREW2, // dust 2 re-make PHOENIX, PROFESSIONAL, SEPARATIST }; enum class DesiredBones : int // used for UI; indexing bool array; map keys for // BoneMaps { BONE_PELVIS = 0, BONE_HIP, BONE_LOWER_SPINAL_COLUMN, BONE_MIDDLE_SPINAL_COLUMN, BONE_UPPER_SPINAL_COLUMN, BONE_NECK, BONE_HEAD, BONE_LEFT_COLLARBONE, BONE_LEFT_SHOULDER, BONE_LEFT_ARMPIT, BONE_LEFT_BICEP, BONE_LEFT_ELBOW, BONE_LEFT_FOREARM, BONE_LEFT_WRIST, BONE_RIGHT_COLLARBONE, BONE_RIGHT_SHOULDER, BONE_RIGHT_ARMPIT, BONE_RIGHT_BICEP, BONE_RIGHT_ELBOW, BONE_RIGHT_FOREARM, BONE_RIGHT_WRIST, BONE_LEFT_BUTTCHEEK, BONE_LEFT_THIGH, BONE_LEFT_KNEE, BONE_LEFT_ANKLE, BONE_LEFT_SOLE, BONE_RIGHT_BUTTCHEEK, BONE_RIGHT_THIGH, BONE_RIGHT_KNEE, BONE_RIGHT_ANKLE, BONE_RIGHT_SOLE, }; /* static const std::map BoneMapStrings // Used for debugging; putting DesiredBones to strings. { { (int)DesiredBones::BONE_PELVIS, "PELVIS" }, { (int)DesiredBones::BONE_HIP, "HIP" }, { (int)DesiredBones::BONE_LOWER_SPINAL_COLUMN, "LOWER SPINE" }, { (int)DesiredBones::BONE_MIDDLE_SPINAL_COLUMN, "MIDDLE SPINE" }, { (int)DesiredBones::BONE_UPPER_SPINAL_COLUMN, "UPPER SPINE" }, { (int)DesiredBones::BONE_NECK, "NECK" }, { (int)DesiredBones::BONE_HEAD, "HEAD" }, { (int)DesiredBones::BONE_LEFT_COLLARBONE, "LEFT COLLARBONE" }, { (int)DesiredBones::BONE_LEFT_SHOULDER, "LEFT SHOULDER" }, { (int)DesiredBones::BONE_LEFT_ARMPIT, "LEFT ARMPIT" }, { (int)DesiredBones::BONE_LEFT_BICEP, "LEFT BICEP" }, { (int)DesiredBones::BONE_LEFT_ELBOW, "LEFT ELBOW" }, { (int)DesiredBones::BONE_LEFT_FOREARM, "LEFT FOREARM" }, { (int)DesiredBones::BONE_LEFT_WRIST, "LEFT WRIST" }, { (int)DesiredBones::BONE_RIGHT_COLLARBONE, "RIGHT COLLARBONE"}, { (int)DesiredBones::BONE_RIGHT_SHOULDER, "RIGHT SHOULDER" }, { (int)DesiredBones::BONE_RIGHT_ARMPIT, "RIGHT ARMPIT" }, { (int)DesiredBones::BONE_RIGHT_BICEP, "RIGHT BICEP" }, { (int)DesiredBones::BONE_RIGHT_ELBOW, "RIGHT ELBOW" }, { (int)DesiredBones::BONE_RIGHT_FOREARM, "RIGHT FOREARM" }, { (int)DesiredBones::BONE_RIGHT_WRIST, "RIGHT WRIST" }, { (int)DesiredBones::BONE_LEFT_BUTTCHEEK, "LEFT BUTTCHEEK" }, { (int)DesiredBones::BONE_LEFT_THIGH, "LEFT THIGH" }, { (int)DesiredBones::BONE_LEFT_KNEE, "LEFT KNEE" }, { (int)DesiredBones::BONE_LEFT_ANKLE, "LEFT ANKLE" }, { (int)DesiredBones::BONE_LEFT_SOLE, "LEFT SOLE" }, { (int)DesiredBones::BONE_RIGHT_BUTTCHEEK, "RIGHT BUTTCHEEK" }, { (int)DesiredBones::BONE_RIGHT_THIGH, "RIGHT THIGH" }, { (int)DesiredBones::BONE_RIGHT_KNEE, "RIGHT KNEE" }, { (int)DesiredBones::BONE_RIGHT_ANKLE, "RIGHT ANKLE" }, { (int)DesiredBones::BONE_RIGHT_SOLE, "RIGHT SOLE" } }; */ enum class Bone : int { INVALID = -1, BONE_PELVIS = 0, LEAN_ROOT, CAM_DRIVER, BONE_HIP, BONE_LOWER_SPINAL_COLUMN, BONE_MIDDLE_SPINAL_COLUMN, BONE_UPPER_SPINAL_COLUMN, BONE_NECK, BONE_HEAD, }; /* If we cannot identify the model type (perhaps a custom model), these should * be the same on most models */ static const std::map BoneMapGeneric = { {(int)DesiredBones::BONE_PELVIS, 0}, {(int)DesiredBones::BONE_HIP, 3}, {(int)DesiredBones::BONE_LOWER_SPINAL_COLUMN, 4}, {(int)DesiredBones::BONE_MIDDLE_SPINAL_COLUMN, 5}, {(int)DesiredBones::BONE_UPPER_SPINAL_COLUMN, 6}, {(int)DesiredBones::BONE_NECK, 7}, {(int)DesiredBones::BONE_HEAD, 8}, }; /* Militia, Assault, Office */ enum class BoneCT_FBI : int { INVALID = -1, BONE_PELVIS = 0, LEAN_ROOT, CAM_DRIVER, BONE_HIP, BONE_LOWER_SPINAL_COLUMN, BONE_MIDDLE_SPINAL_COLUMN, BONE_UPPER_SPINAL_COLUMN, BONE_NECK, BONE_HEAD, BONE_LEFT_COLLARBONE = 9, BONE_LEFT_SHOULDER = 10, BONE_LEFT_ARMPIT = 35, BONE_LEFT_BICEP = 36, BONE_LEFT_ELBOW = 11, BONE_LEFT_FOREARM = 33, BONE_LEFT_WRIST = 12, BONE_RIGHT_COLLARBONE = 37, BONE_RIGHT_SHOULDER = 38, BONE_RIGHT_ARMPIT = 63, BONE_RIGHT_BICEP = 64, BONE_RIGHT_ELBOW = 39, BONE_RIGHT_FOREARM = 61, BONE_RIGHT_WRIST = 40, BONE_LEFT_BUTTCHEEK = 65, BONE_LEFT_THIGH = 70, BONE_LEFT_KNEE = 66, BONE_LEFT_ANKLE = 67, BONE_LEFT_SOLE = 69, BONE_RIGHT_BUTTCHEEK = 72, BONE_RIGHT_THIGH = 77, BONE_RIGHT_KNEE = 73, BONE_RIGHT_ANKLE = 74, BONE_RIGHT_SOLE = 75 }; static const std::map BoneMapCT_FBI = { {(int)DesiredBones::BONE_PELVIS, (int)BoneCT_FBI::BONE_PELVIS}, {(int)DesiredBones::BONE_HIP, (int)BoneCT_FBI::BONE_HIP}, {(int)DesiredBones::BONE_LOWER_SPINAL_COLUMN, (int)BoneCT_FBI::BONE_LOWER_SPINAL_COLUMN}, {(int)DesiredBones::BONE_MIDDLE_SPINAL_COLUMN, (int)BoneCT_FBI::BONE_MIDDLE_SPINAL_COLUMN}, {(int)DesiredBones::BONE_UPPER_SPINAL_COLUMN, (int)BoneCT_FBI::BONE_UPPER_SPINAL_COLUMN}, {(int)DesiredBones::BONE_NECK, (int)BoneCT_FBI::BONE_NECK}, {(int)DesiredBones::BONE_HEAD, (int)BoneCT_FBI::BONE_HEAD}, {(int)DesiredBones::BONE_LEFT_COLLARBONE, (int)BoneCT_FBI::BONE_LEFT_COLLARBONE}, {(int)DesiredBones::BONE_LEFT_SHOULDER, (int)BoneCT_FBI::BONE_LEFT_SHOULDER}, {(int)DesiredBones::BONE_LEFT_ARMPIT, (int)BoneCT_FBI::BONE_LEFT_ARMPIT}, {(int)DesiredBones::BONE_LEFT_BICEP, (int)BoneCT_FBI::BONE_LEFT_BICEP}, {(int)DesiredBones::BONE_LEFT_ELBOW, (int)BoneCT_FBI::BONE_LEFT_ELBOW}, {(int)DesiredBones::BONE_LEFT_FOREARM, (int)BoneCT_FBI::BONE_LEFT_FOREARM}, {(int)DesiredBones::BONE_LEFT_WRIST, (int)BoneCT_FBI::BONE_LEFT_WRIST}, {(int)DesiredBones::BONE_RIGHT_COLLARBONE, (int)BoneCT_FBI::BONE_RIGHT_COLLARBONE}, {(int)DesiredBones::BONE_RIGHT_SHOULDER, (int)BoneCT_FBI::BONE_RIGHT_SHOULDER}, {(int)DesiredBones::BONE_RIGHT_ARMPIT, (int)BoneCT_FBI::BONE_RIGHT_ARMPIT}, {(int)DesiredBones::BONE_RIGHT_BICEP, (int)BoneCT_FBI::BONE_RIGHT_BICEP}, {(int)DesiredBones::BONE_RIGHT_ELBOW, (int)BoneCT_FBI::BONE_RIGHT_ELBOW}, {(int)DesiredBones::BONE_RIGHT_FOREARM, (int)BoneCT_FBI::BONE_RIGHT_FOREARM}, {(int)DesiredBones::BONE_RIGHT_WRIST, (int)BoneCT_FBI::BONE_RIGHT_WRIST}, {(int)DesiredBones::BONE_LEFT_BUTTCHEEK, (int)BoneCT_FBI::BONE_LEFT_BUTTCHEEK}, {(int)DesiredBones::BONE_LEFT_THIGH, (int)BoneCT_FBI::BONE_LEFT_THIGH}, {(int)DesiredBones::BONE_LEFT_KNEE, (int)BoneCT_FBI::BONE_LEFT_KNEE}, {(int)DesiredBones::BONE_LEFT_ANKLE, (int)BoneCT_FBI::BONE_LEFT_ANKLE}, {(int)DesiredBones::BONE_LEFT_SOLE, (int)BoneCT_FBI::BONE_LEFT_SOLE}, {(int)DesiredBones::BONE_RIGHT_BUTTCHEEK, (int)BoneCT_FBI::BONE_RIGHT_BUTTCHEEK}, {(int)DesiredBones::BONE_RIGHT_THIGH, (int)BoneCT_FBI::BONE_RIGHT_THIGH}, {(int)DesiredBones::BONE_RIGHT_KNEE, (int)BoneCT_FBI::BONE_RIGHT_KNEE}, {(int)DesiredBones::BONE_RIGHT_ANKLE, (int)BoneCT_FBI::BONE_RIGHT_ANKLE}, {(int)DesiredBones::BONE_RIGHT_SOLE, (int)BoneCT_FBI::BONE_RIGHT_SOLE}}; /* Cobblestone, Italy, Cache */ enum class BoneCT_GIGN : int { INVALID = -1, BONE_PELVIS = 0, LEAN_ROOT, CAM_DRIVER, BONE_HIP, BONE_LOWER_SPINAL_COLUMN, BONE_MIDDLE_SPINAL_COLUMN, BONE_UPPER_SPINAL_COLUMN, BONE_NECK, BONE_HEAD, BONE_LEFT_COLLARBONE = 10, BONE_LEFT_DELTOID = 38, // The left side has a deltoid for some reason. BONE_LEFT_SHOULDER = 11, BONE_LEFT_ARMPIT = 36, BONE_LEFT_BICEP = 37, BONE_LEFT_ELBOW = 12, BONE_LEFT_FOREARM = 34, BONE_LEFT_WRIST = 13, BONE_RIGHT_COLLARBONE = 39, BONE_RIGHT_SHOULDER = 40, BONE_RIGHT_ARMPIT = 65, BONE_RIGHT_BICEP = 66, BONE_RIGHT_ELBOW = 41, BONE_RIGHT_FOREARM = 63, BONE_RIGHT_WRIST = 42, BONE_LEFT_BUTTCHEEK = 69, BONE_LEFT_THIGH = 74, BONE_LEFT_KNEE = 70, BONE_LEFT_ANKLE = 71, BONE_LEFT_SOLE = 73, BONE_RIGHT_BUTTCHEEK = 76, BONE_RIGHT_THIGH = 81, BONE_RIGHT_KNEE = 77, BONE_RIGHT_ANKLE = 78, BONE_RIGHT_SOLE = 79, }; static const std::map BoneMapCT_GIGN = { {(int)DesiredBones::BONE_PELVIS, (int)BoneCT_GIGN::BONE_PELVIS}, {(int)DesiredBones::BONE_HIP, (int)BoneCT_GIGN::BONE_HIP}, {(int)DesiredBones::BONE_LOWER_SPINAL_COLUMN, (int)BoneCT_GIGN::BONE_LOWER_SPINAL_COLUMN}, {(int)DesiredBones::BONE_MIDDLE_SPINAL_COLUMN, (int)BoneCT_GIGN::BONE_MIDDLE_SPINAL_COLUMN}, {(int)DesiredBones::BONE_UPPER_SPINAL_COLUMN, (int)BoneCT_GIGN::BONE_UPPER_SPINAL_COLUMN}, {(int)DesiredBones::BONE_NECK, (int)BoneCT_GIGN::BONE_NECK}, {(int)DesiredBones::BONE_HEAD, (int)BoneCT_GIGN::BONE_HEAD}, {(int)DesiredBones::BONE_LEFT_COLLARBONE, (int)BoneCT_GIGN::BONE_LEFT_COLLARBONE}, {(int)DesiredBones::BONE_LEFT_SHOULDER, (int)BoneCT_GIGN::BONE_LEFT_SHOULDER}, {(int)DesiredBones::BONE_LEFT_ARMPIT, (int)BoneCT_GIGN::BONE_LEFT_ARMPIT}, {(int)DesiredBones::BONE_LEFT_BICEP, (int)BoneCT_GIGN::BONE_LEFT_BICEP}, {(int)DesiredBones::BONE_LEFT_ELBOW, (int)BoneCT_GIGN::BONE_LEFT_ELBOW}, {(int)DesiredBones::BONE_LEFT_FOREARM, (int)BoneCT_GIGN::BONE_LEFT_FOREARM}, {(int)DesiredBones::BONE_LEFT_WRIST, (int)BoneCT_GIGN::BONE_LEFT_WRIST}, {(int)DesiredBones::BONE_RIGHT_COLLARBONE, (int)BoneCT_GIGN::BONE_RIGHT_COLLARBONE}, {(int)DesiredBones::BONE_RIGHT_SHOULDER, (int)BoneCT_GIGN::BONE_RIGHT_SHOULDER}, {(int)DesiredBones::BONE_RIGHT_ARMPIT, (int)BoneCT_GIGN::BONE_RIGHT_ARMPIT}, {(int)DesiredBones::BONE_RIGHT_BICEP, (int)BoneCT_GIGN::BONE_RIGHT_BICEP}, {(int)DesiredBones::BONE_RIGHT_ELBOW, (int)BoneCT_GIGN::BONE_RIGHT_ELBOW}, {(int)DesiredBones::BONE_RIGHT_FOREARM, (int)BoneCT_GIGN::BONE_RIGHT_FOREARM}, {(int)DesiredBones::BONE_RIGHT_WRIST, (int)BoneCT_GIGN::BONE_RIGHT_WRIST}, {(int)DesiredBones::BONE_LEFT_BUTTCHEEK, (int)BoneCT_GIGN::BONE_LEFT_BUTTCHEEK}, {(int)DesiredBones::BONE_LEFT_THIGH, (int)BoneCT_GIGN::BONE_LEFT_THIGH}, {(int)DesiredBones::BONE_LEFT_KNEE, (int)BoneCT_GIGN::BONE_LEFT_KNEE}, {(int)DesiredBones::BONE_LEFT_ANKLE, (int)BoneCT_GIGN::BONE_LEFT_ANKLE}, {(int)DesiredBones::BONE_LEFT_SOLE, (int)BoneCT_GIGN::BONE_LEFT_SOLE}, {(int)DesiredBones::BONE_RIGHT_BUTTCHEEK, (int)BoneCT_GIGN::BONE_RIGHT_BUTTCHEEK}, {(int)DesiredBones::BONE_RIGHT_THIGH, (int)BoneCT_GIGN::BONE_RIGHT_THIGH}, {(int)DesiredBones::BONE_RIGHT_KNEE, (int)BoneCT_GIGN::BONE_RIGHT_KNEE}, {(int)DesiredBones::BONE_RIGHT_ANKLE, (int)BoneCT_GIGN::BONE_RIGHT_ANKLE}, {(int)DesiredBones::BONE_RIGHT_SOLE, (int)BoneCT_GIGN::BONE_RIGHT_SOLE}}; /* Overpass */ enum class BoneCT_GSG : int { INVALID = -1, BONE_PELVIS = 0, LEAN_ROOT, CAM_DRIVER, BONE_HIP, BONE_LOWER_SPINAL_COLUMN, BONE_MIDDLE_SPINAL_COLUMN, BONE_UPPER_SPINAL_COLUMN, BONE_NECK, BONE_HEAD, BONE_LEFT_COLLARBONE = 9, BONE_LEFT_SHOULDER = 10, BONE_LEFT_BICEP = 36, BONE_LEFT_ELBOW = 11, BONE_LEFT_FOREARM = 34, BONE_LEFT_WRIST = 12, BONE_RIGHT_COLLARBONE = 37, BONE_RIGHT_SHOULDER = 38, BONE_RIGHT_BICEP = 64, BONE_RIGHT_ELBOW = 39, BONE_RIGHT_FOREARM = 62, BONE_RIGHT_WRIST = 40, BONE_LEFT_BUTTCHEEK = 65, BONE_LEFT_THIGH = 70, BONE_LEFT_KNEE = 66, BONE_LEFT_ANKLE = 67, BONE_LEFT_SOLE = 69, BONE_RIGHT_BUTTCHEEK = 72, BONE_RIGHT_THIGH = 77, BONE_RIGHT_KNEE = 73, BONE_RIGHT_ANKLE = 74, BONE_RIGHT_SOLE = 75 }; static const std::map BoneMapCT_GSG = { {(int)DesiredBones::BONE_PELVIS, (int)BoneCT_GSG::BONE_PELVIS}, {(int)DesiredBones::BONE_HIP, (int)BoneCT_GSG::BONE_HIP}, {(int)DesiredBones::BONE_LOWER_SPINAL_COLUMN, (int)BoneCT_GSG::BONE_LOWER_SPINAL_COLUMN}, {(int)DesiredBones::BONE_MIDDLE_SPINAL_COLUMN, (int)BoneCT_GSG::BONE_MIDDLE_SPINAL_COLUMN}, {(int)DesiredBones::BONE_UPPER_SPINAL_COLUMN, (int)BoneCT_GSG::BONE_UPPER_SPINAL_COLUMN}, {(int)DesiredBones::BONE_NECK, (int)BoneCT_GSG::BONE_NECK}, {(int)DesiredBones::BONE_HEAD, (int)BoneCT_GSG::BONE_HEAD}, {(int)DesiredBones::BONE_LEFT_COLLARBONE, (int)BoneCT_GSG::BONE_LEFT_COLLARBONE}, {(int)DesiredBones::BONE_LEFT_SHOULDER, (int)BoneCT_GSG::BONE_LEFT_SHOULDER}, {(int)DesiredBones::BONE_LEFT_ARMPIT, -1}, {(int)DesiredBones::BONE_LEFT_BICEP, (int)BoneCT_GSG::BONE_LEFT_BICEP}, {(int)DesiredBones::BONE_LEFT_ELBOW, (int)BoneCT_GSG::BONE_LEFT_ELBOW}, {(int)DesiredBones::BONE_LEFT_FOREARM, (int)BoneCT_GSG::BONE_LEFT_FOREARM}, {(int)DesiredBones::BONE_LEFT_WRIST, (int)BoneCT_GSG::BONE_LEFT_WRIST}, {(int)DesiredBones::BONE_RIGHT_COLLARBONE, (int)BoneCT_GSG::BONE_RIGHT_COLLARBONE}, {(int)DesiredBones::BONE_RIGHT_SHOULDER, (int)BoneCT_GSG::BONE_RIGHT_SHOULDER}, {(int)DesiredBones::BONE_RIGHT_ARMPIT, -1}, {(int)DesiredBones::BONE_RIGHT_BICEP, (int)BoneCT_GSG::BONE_RIGHT_BICEP}, {(int)DesiredBones::BONE_RIGHT_ELBOW, (int)BoneCT_GSG::BONE_RIGHT_ELBOW}, {(int)DesiredBones::BONE_RIGHT_FOREARM, (int)BoneCT_GSG::BONE_RIGHT_FOREARM}, {(int)DesiredBones::BONE_RIGHT_WRIST, (int)BoneCT_GSG::BONE_RIGHT_WRIST}, {(int)DesiredBones::BONE_LEFT_BUTTCHEEK, (int)BoneCT_GSG::BONE_LEFT_BUTTCHEEK}, {(int)DesiredBones::BONE_LEFT_THIGH, (int)BoneCT_GSG::BONE_LEFT_THIGH}, {(int)DesiredBones::BONE_LEFT_KNEE, (int)BoneCT_GSG::BONE_LEFT_KNEE}, {(int)DesiredBones::BONE_LEFT_ANKLE, (int)BoneCT_GSG::BONE_LEFT_ANKLE}, {(int)DesiredBones::BONE_LEFT_SOLE, (int)BoneCT_GSG::BONE_LEFT_SOLE}, {(int)DesiredBones::BONE_RIGHT_BUTTCHEEK, (int)BoneCT_GSG::BONE_RIGHT_BUTTCHEEK}, {(int)DesiredBones::BONE_RIGHT_THIGH, (int)BoneCT_GSG::BONE_RIGHT_THIGH}, {(int)DesiredBones::BONE_RIGHT_KNEE, (int)BoneCT_GSG::BONE_RIGHT_KNEE}, {(int)DesiredBones::BONE_RIGHT_ANKLE, (int)BoneCT_GSG::BONE_RIGHT_ANKLE}, {(int)DesiredBones::BONE_RIGHT_SOLE, (int)BoneCT_GSG::BONE_RIGHT_SOLE}}; /* Dust, Dust2 */ enum class BoneCT_IDF : int { INVALID = -1, BONE_PELVIS = 0, LEAN_ROOT, CAM_DRIVER, BONE_HIP, BONE_LOWER_SPINAL_COLUMN, BONE_MIDDLE_SPINAL_COLUMN, BONE_UPPER_SPINAL_COLUMN, BONE_NECK, BONE_HEAD, BONE_STERNUM, BONE_LEFT_COLLARBONE, // 10 BONE_LEFT_DELTOID = 11, BONE_LEFT_ELBOW = 12, BONE_LEFT_WRIST = 13, BONE_LEFT_FOREARM = 35, BONE_LEFT_BICEP = 37, BONE_LEFT_SHOULDER = 38, BONE_LEFT_ARMPIT = 39, BONE_RIGHT_COLLARBONE = 40, BONE_RIGHT_DELTOID = 41, BONE_RIGHT_ELBOW = 42, BONE_RIGHT_WRIST = 43, BONE_RIGHT_FOREARM = 65, BONE_RIGHT_BICEP = 67, BONE_RIGHT_SHOULDER = 68, BONE_RIGHT_ARMPIT = 69, BONE_LEFT_BUTTCHEEK = 70, BONE_LEFT_THIGH = 75, BONE_LEFT_KNEE = 71, BONE_LEFT_ANKLE = 72, BONE_LEFT_SOLE = 73, BONE_RIGHT_BUTTCHEEK = 77, BONE_RIGHT_THIGH = 82, BONE_RIGHT_KNEE = 78, BONE_RIGHT_ANKLE = 79, BONE_RIGHT_SOLE = 80 }; static const std::map BoneMapCT_IDF = { {(int)DesiredBones::BONE_PELVIS, (int)BoneCT_IDF::BONE_PELVIS}, {(int)DesiredBones::BONE_HIP, (int)BoneCT_IDF::BONE_HIP}, {(int)DesiredBones::BONE_LOWER_SPINAL_COLUMN, (int)BoneCT_IDF::BONE_LOWER_SPINAL_COLUMN}, {(int)DesiredBones::BONE_MIDDLE_SPINAL_COLUMN, (int)BoneCT_IDF::BONE_MIDDLE_SPINAL_COLUMN}, {(int)DesiredBones::BONE_UPPER_SPINAL_COLUMN, (int)BoneCT_IDF::BONE_UPPER_SPINAL_COLUMN}, {(int)DesiredBones::BONE_NECK, (int)BoneCT_IDF::BONE_NECK}, {(int)DesiredBones::BONE_HEAD, (int)BoneCT_IDF::BONE_HEAD}, {(int)DesiredBones::BONE_LEFT_COLLARBONE, (int)BoneCT_IDF::BONE_LEFT_COLLARBONE}, {(int)DesiredBones::BONE_LEFT_SHOULDER, (int)BoneCT_IDF::BONE_LEFT_SHOULDER}, {(int)DesiredBones::BONE_LEFT_ARMPIT, (int)BoneCT_IDF::BONE_LEFT_ARMPIT}, {(int)DesiredBones::BONE_LEFT_BICEP, (int)BoneCT_IDF::BONE_LEFT_BICEP}, {(int)DesiredBones::BONE_LEFT_ELBOW, (int)BoneCT_IDF::BONE_LEFT_ELBOW}, {(int)DesiredBones::BONE_LEFT_FOREARM, (int)BoneCT_IDF::BONE_LEFT_FOREARM}, {(int)DesiredBones::BONE_LEFT_WRIST, (int)BoneCT_IDF::BONE_LEFT_WRIST}, {(int)DesiredBones::BONE_RIGHT_COLLARBONE, (int)BoneCT_IDF::BONE_RIGHT_COLLARBONE}, {(int)DesiredBones::BONE_RIGHT_SHOULDER, (int)BoneCT_IDF::BONE_RIGHT_SHOULDER}, {(int)DesiredBones::BONE_RIGHT_ARMPIT, (int)BoneCT_IDF::BONE_RIGHT_ARMPIT}, {(int)DesiredBones::BONE_RIGHT_BICEP, (int)BoneCT_IDF::BONE_RIGHT_BICEP}, {(int)DesiredBones::BONE_RIGHT_ELBOW, (int)BoneCT_IDF::BONE_RIGHT_ELBOW}, {(int)DesiredBones::BONE_RIGHT_FOREARM, (int)BoneCT_IDF::BONE_RIGHT_FOREARM}, {(int)DesiredBones::BONE_RIGHT_WRIST, (int)BoneCT_IDF::BONE_RIGHT_WRIST}, {(int)DesiredBones::BONE_LEFT_BUTTCHEEK, (int)BoneCT_IDF::BONE_LEFT_BUTTCHEEK}, {(int)DesiredBones::BONE_LEFT_THIGH, (int)BoneCT_IDF::BONE_LEFT_THIGH}, {(int)DesiredBones::BONE_LEFT_KNEE, (int)BoneCT_IDF::BONE_LEFT_KNEE}, {(int)DesiredBones::BONE_LEFT_ANKLE, (int)BoneCT_IDF::BONE_LEFT_ANKLE}, {(int)DesiredBones::BONE_LEFT_SOLE, (int)BoneCT_IDF::BONE_LEFT_SOLE}, {(int)DesiredBones::BONE_RIGHT_BUTTCHEEK, (int)BoneCT_IDF::BONE_RIGHT_BUTTCHEEK}, {(int)DesiredBones::BONE_RIGHT_THIGH, (int)BoneCT_IDF::BONE_RIGHT_THIGH}, {(int)DesiredBones::BONE_RIGHT_KNEE, (int)BoneCT_IDF::BONE_RIGHT_KNEE}, {(int)DesiredBones::BONE_RIGHT_ANKLE, (int)BoneCT_IDF::BONE_RIGHT_ANKLE}, {(int)DesiredBones::BONE_RIGHT_SOLE, (int)BoneCT_IDF::BONE_RIGHT_SOLE}}; /* Train, Aztec, Nuke */ enum class BoneCT_Seals : int { INVALID = -1, BONE_PELVIS = 0, LEAN_ROOT, CAM_DRIVER, BONE_HIP, BONE_LOWER_SPINAL_COLUMN, BONE_MIDDLE_SPINAL_COLUMN, BONE_UPPER_SPINAL_COLUMN, BONE_NECK, BONE_HEAD, BONE_LEFT_COLLARBONE = 9, BONE_LEFT_SHOULDER = 10, BONE_LEFT_BICEP = 36, BONE_LEFT_ELBOW = 11, BONE_LEFT_FOREARM = 34, BONE_LEFT_WRIST = 12, BONE_RIGHT_COLLARBONE = 37, BONE_RIGHT_SHOULDER = 38, BONE_RIGHT_BICEP = 64, BONE_RIGHT_ELBOW = 39, BONE_RIGHT_FOREARM = 62, BONE_RIGHT_WRIST = 40, BONE_LEFT_BUTTCHEEK = 65, BONE_LEFT_THIGH = 70, BONE_LEFT_KNEE = 66, BONE_LEFT_ANKLE = 67, BONE_LEFT_SOLE = 69, BONE_RIGHT_BUTTCHEEK = 72, BONE_RIGHT_THIGH = 77, BONE_RIGHT_KNEE = 73, BONE_RIGHT_ANKLE = 74, BONE_RIGHT_SOLE = 75 }; static const std::map BoneMapCT_Seals = { {(int)DesiredBones::BONE_PELVIS, (int)BoneCT_Seals::BONE_PELVIS}, {(int)DesiredBones::BONE_HIP, (int)BoneCT_Seals::BONE_HIP}, {(int)DesiredBones::BONE_LOWER_SPINAL_COLUMN, (int)BoneCT_Seals::BONE_LOWER_SPINAL_COLUMN}, {(int)DesiredBones::BONE_MIDDLE_SPINAL_COLUMN, (int)BoneCT_Seals::BONE_MIDDLE_SPINAL_COLUMN}, {(int)DesiredBones::BONE_UPPER_SPINAL_COLUMN, (int)BoneCT_Seals::BONE_UPPER_SPINAL_COLUMN}, {(int)DesiredBones::BONE_NECK, (int)BoneCT_Seals::BONE_NECK}, {(int)DesiredBones::BONE_HEAD, (int)BoneCT_Seals::BONE_HEAD}, {(int)DesiredBones::BONE_LEFT_COLLARBONE, (int)BoneCT_Seals::BONE_LEFT_COLLARBONE}, {(int)DesiredBones::BONE_LEFT_SHOULDER, (int)BoneCT_Seals::BONE_LEFT_SHOULDER}, {(int)DesiredBones::BONE_LEFT_ARMPIT, -1}, {(int)DesiredBones::BONE_LEFT_BICEP, (int)BoneCT_Seals::BONE_LEFT_BICEP}, {(int)DesiredBones::BONE_LEFT_ELBOW, (int)BoneCT_Seals::BONE_LEFT_ELBOW}, {(int)DesiredBones::BONE_LEFT_FOREARM, (int)BoneCT_Seals::BONE_LEFT_FOREARM}, {(int)DesiredBones::BONE_LEFT_WRIST, (int)BoneCT_Seals::BONE_LEFT_WRIST}, {(int)DesiredBones::BONE_RIGHT_COLLARBONE, (int)BoneCT_Seals::BONE_RIGHT_COLLARBONE}, {(int)DesiredBones::BONE_RIGHT_SHOULDER, (int)BoneCT_Seals::BONE_RIGHT_SHOULDER}, {(int)DesiredBones::BONE_RIGHT_ARMPIT, -1}, {(int)DesiredBones::BONE_RIGHT_BICEP, (int)BoneCT_Seals::BONE_RIGHT_BICEP}, {(int)DesiredBones::BONE_RIGHT_ELBOW, (int)BoneCT_Seals::BONE_RIGHT_ELBOW}, {(int)DesiredBones::BONE_RIGHT_FOREARM, (int)BoneCT_Seals::BONE_RIGHT_FOREARM}, {(int)DesiredBones::BONE_RIGHT_WRIST, (int)BoneCT_Seals::BONE_RIGHT_WRIST}, {(int)DesiredBones::BONE_LEFT_BUTTCHEEK, (int)BoneCT_Seals::BONE_LEFT_BUTTCHEEK}, {(int)DesiredBones::BONE_LEFT_THIGH, (int)BoneCT_Seals::BONE_LEFT_THIGH}, {(int)DesiredBones::BONE_LEFT_KNEE, (int)BoneCT_Seals::BONE_LEFT_KNEE}, {(int)DesiredBones::BONE_LEFT_ANKLE, (int)BoneCT_Seals::BONE_LEFT_ANKLE}, {(int)DesiredBones::BONE_LEFT_SOLE, (int)BoneCT_Seals::BONE_LEFT_SOLE}, {(int)DesiredBones::BONE_RIGHT_BUTTCHEEK, (int)BoneCT_Seals::BONE_RIGHT_BUTTCHEEK}, {(int)DesiredBones::BONE_RIGHT_THIGH, (int)BoneCT_Seals::BONE_RIGHT_THIGH}, {(int)DesiredBones::BONE_RIGHT_KNEE, (int)BoneCT_Seals::BONE_RIGHT_KNEE}, {(int)DesiredBones::BONE_RIGHT_ANKLE, (int)BoneCT_Seals::BONE_RIGHT_ANKLE}, {(int)DesiredBones::BONE_RIGHT_SOLE, (int)BoneCT_Seals::BONE_RIGHT_SOLE}}; /* Inferno, Shorttrain, Mirage */ enum class BoneCT_SAS : int { INVALID = -1, BONE_PELVIS = 0, LEAN_ROOT, CAM_DRIVER, BONE_HIP, BONE_LOWER_SPINAL_COLUMN, BONE_MIDDLE_SPINAL_COLUMN, BONE_UPPER_SPINAL_COLUMN, BONE_NECK, BONE_HEAD, BONE_LEFT_COLLARBONE = 10, BONE_LEFT_SHOULDER = 11, BONE_LEFT_ARMPIT = 36, BONE_LEFT_BICEP = 37, BONE_LEFT_ELBOW = 12, BONE_LEFT_FOREARM = 34, BONE_LEFT_WRIST = 13, BONE_RIGHT_COLLARBONE = 39, BONE_RIGHT_SHOULDER = 40, BONE_RIGHT_ARMPIT = 65, BONE_RIGHT_BICEP = 66, BONE_RIGHT_ELBOW = 41, BONE_RIGHT_FOREARM = 63, BONE_RIGHT_WRIST = 42, BONE_LEFT_BUTTCHEEK = 72, BONE_LEFT_THIGH = 77, BONE_LEFT_KNEE = 73, BONE_LEFT_ANKLE = 74, BONE_LEFT_SOLE = 76, BONE_RIGHT_BUTTCHEEK = 81, BONE_RIGHT_THIGH = 87, BONE_RIGHT_KNEE = 82, BONE_RIGHT_ANKLE = 83, BONE_RIGHT_SOLE = 84, }; static const std::map BoneMapCT_SAS = { {(int)DesiredBones::BONE_PELVIS, (int)BoneCT_SAS::BONE_PELVIS}, {(int)DesiredBones::BONE_HIP, (int)BoneCT_SAS::BONE_HIP}, {(int)DesiredBones::BONE_LOWER_SPINAL_COLUMN, (int)BoneCT_SAS::BONE_LOWER_SPINAL_COLUMN}, {(int)DesiredBones::BONE_MIDDLE_SPINAL_COLUMN, (int)BoneCT_SAS::BONE_MIDDLE_SPINAL_COLUMN}, {(int)DesiredBones::BONE_UPPER_SPINAL_COLUMN, (int)BoneCT_SAS::BONE_UPPER_SPINAL_COLUMN}, {(int)DesiredBones::BONE_NECK, (int)BoneCT_SAS::BONE_NECK}, {(int)DesiredBones::BONE_HEAD, (int)BoneCT_SAS::BONE_HEAD}, {(int)DesiredBones::BONE_LEFT_COLLARBONE, (int)BoneCT_SAS::BONE_LEFT_COLLARBONE}, {(int)DesiredBones::BONE_LEFT_SHOULDER, (int)BoneCT_SAS::BONE_LEFT_SHOULDER}, {(int)DesiredBones::BONE_LEFT_ARMPIT, (int)BoneCT_SAS::BONE_LEFT_ARMPIT}, {(int)DesiredBones::BONE_LEFT_BICEP, (int)BoneCT_SAS::BONE_LEFT_BICEP}, {(int)DesiredBones::BONE_LEFT_ELBOW, (int)BoneCT_SAS::BONE_LEFT_ELBOW}, {(int)DesiredBones::BONE_LEFT_FOREARM, (int)BoneCT_SAS::BONE_LEFT_FOREARM}, {(int)DesiredBones::BONE_LEFT_WRIST, (int)BoneCT_SAS::BONE_LEFT_WRIST}, {(int)DesiredBones::BONE_RIGHT_COLLARBONE, (int)BoneCT_SAS::BONE_RIGHT_COLLARBONE}, {(int)DesiredBones::BONE_RIGHT_SHOULDER, (int)BoneCT_SAS::BONE_RIGHT_SHOULDER}, {(int)DesiredBones::BONE_RIGHT_ARMPIT, (int)BoneCT_SAS::BONE_RIGHT_ARMPIT}, {(int)DesiredBones::BONE_RIGHT_BICEP, (int)BoneCT_SAS::BONE_RIGHT_BICEP}, {(int)DesiredBones::BONE_RIGHT_ELBOW, (int)BoneCT_SAS::BONE_RIGHT_ELBOW}, {(int)DesiredBones::BONE_RIGHT_FOREARM, (int)BoneCT_SAS::BONE_RIGHT_FOREARM}, {(int)DesiredBones::BONE_RIGHT_WRIST, (int)BoneCT_SAS::BONE_RIGHT_WRIST}, {(int)DesiredBones::BONE_LEFT_BUTTCHEEK, (int)BoneCT_SAS::BONE_LEFT_BUTTCHEEK}, {(int)DesiredBones::BONE_LEFT_THIGH, (int)BoneCT_SAS::BONE_LEFT_THIGH}, {(int)DesiredBones::BONE_LEFT_KNEE, (int)BoneCT_SAS::BONE_LEFT_KNEE}, {(int)DesiredBones::BONE_LEFT_ANKLE, (int)BoneCT_SAS::BONE_LEFT_ANKLE}, {(int)DesiredBones::BONE_LEFT_SOLE, (int)BoneCT_SAS::BONE_LEFT_SOLE}, {(int)DesiredBones::BONE_RIGHT_BUTTCHEEK, (int)BoneCT_SAS::BONE_RIGHT_BUTTCHEEK}, {(int)DesiredBones::BONE_RIGHT_THIGH, (int)BoneCT_SAS::BONE_RIGHT_THIGH}, {(int)DesiredBones::BONE_RIGHT_KNEE, (int)BoneCT_SAS::BONE_RIGHT_KNEE}, {(int)DesiredBones::BONE_RIGHT_ANKLE, (int)BoneCT_SAS::BONE_RIGHT_ANKLE}, {(int)DesiredBones::BONE_RIGHT_SOLE, (int)BoneCT_SAS::BONE_RIGHT_SOLE}}; /* Vertigo */ enum class BoneCT_SWAT : int { INVALID = -1, BONE_PELVIS = 0, LEAN_ROOT, CAM_DRIVER, BONE_HIP, BONE_LOWER_SPINAL_COLUMN, BONE_MIDDLE_SPINAL_COLUMN, BONE_UPPER_SPINAL_COLUMN, BONE_NECK, BONE_HEAD, BONE_RIGHT_COLLARBONE = 11, BONE_RIGHT_SHOULDER = 12, BONE_RIGHT_ARMPIT = 37, BONE_RIGHT_BICEP = 38, BONE_RIGHT_ELBOW = 13, BONE_RIGHT_FOREARM = 37, BONE_RIGHT_WRIST = 14, BONE_LEFT_COLLARBONE = 39, BONE_LEFT_SHOULDER = 40, BONE_LEFT_ARMPIT = 65, BONE_LEFT_BICEP = 66, BONE_LEFT_ELBOW = 41, BONE_LEFT_FOREARM = 63, BONE_LEFT_WRIST = 42, BONE_LEFT_BUTTCHEEK = 67, BONE_LEFT_THIGH = 72, BONE_LEFT_KNEE = 68, BONE_LEFT_ANKLE = 69, BONE_LEFT_SOLE = 71, BONE_RIGHT_BUTTCHEEK = 74, BONE_RIGHT_THIGH = 79, BONE_RIGHT_KNEE = 75, BONE_RIGHT_ANKLE = 76, BONE_RIGHT_SOLE = 77 }; static const std::map BoneMapCT_SWAT = { {(int)DesiredBones::BONE_PELVIS, (int)BoneCT_SWAT::BONE_PELVIS}, {(int)DesiredBones::BONE_HIP, (int)BoneCT_SWAT::BONE_HIP}, {(int)DesiredBones::BONE_LOWER_SPINAL_COLUMN, (int)BoneCT_SWAT::BONE_LOWER_SPINAL_COLUMN}, {(int)DesiredBones::BONE_MIDDLE_SPINAL_COLUMN, (int)BoneCT_SWAT::BONE_MIDDLE_SPINAL_COLUMN}, {(int)DesiredBones::BONE_UPPER_SPINAL_COLUMN, (int)BoneCT_SWAT::BONE_UPPER_SPINAL_COLUMN}, {(int)DesiredBones::BONE_NECK, (int)BoneCT_SWAT::BONE_NECK}, {(int)DesiredBones::BONE_HEAD, (int)BoneCT_SWAT::BONE_HEAD}, {(int)DesiredBones::BONE_LEFT_COLLARBONE, (int)BoneCT_SWAT::BONE_LEFT_COLLARBONE}, {(int)DesiredBones::BONE_LEFT_SHOULDER, (int)BoneCT_SWAT::BONE_LEFT_SHOULDER}, {(int)DesiredBones::BONE_LEFT_ARMPIT, (int)BoneCT_SWAT::BONE_LEFT_ARMPIT}, {(int)DesiredBones::BONE_LEFT_BICEP, (int)BoneCT_SWAT::BONE_LEFT_BICEP}, {(int)DesiredBones::BONE_LEFT_ELBOW, (int)BoneCT_SWAT::BONE_LEFT_ELBOW}, {(int)DesiredBones::BONE_LEFT_FOREARM, (int)BoneCT_SWAT::BONE_LEFT_FOREARM}, {(int)DesiredBones::BONE_LEFT_WRIST, (int)BoneCT_SWAT::BONE_LEFT_WRIST}, {(int)DesiredBones::BONE_RIGHT_COLLARBONE, (int)BoneCT_SWAT::BONE_RIGHT_COLLARBONE}, {(int)DesiredBones::BONE_RIGHT_SHOULDER, (int)BoneCT_SWAT::BONE_RIGHT_SHOULDER}, {(int)DesiredBones::BONE_RIGHT_ARMPIT, (int)BoneCT_SWAT::BONE_RIGHT_ARMPIT}, {(int)DesiredBones::BONE_RIGHT_BICEP, (int)BoneCT_SWAT::BONE_RIGHT_BICEP}, {(int)DesiredBones::BONE_RIGHT_ELBOW, (int)BoneCT_SWAT::BONE_RIGHT_ELBOW}, {(int)DesiredBones::BONE_RIGHT_FOREARM, (int)BoneCT_SWAT::BONE_RIGHT_FOREARM}, {(int)DesiredBones::BONE_RIGHT_WRIST, (int)BoneCT_SWAT::BONE_RIGHT_WRIST}, {(int)DesiredBones::BONE_LEFT_BUTTCHEEK, (int)BoneCT_SWAT::BONE_LEFT_BUTTCHEEK}, {(int)DesiredBones::BONE_LEFT_THIGH, (int)BoneCT_SWAT::BONE_LEFT_THIGH}, {(int)DesiredBones::BONE_LEFT_KNEE, (int)BoneCT_SWAT::BONE_LEFT_KNEE}, {(int)DesiredBones::BONE_LEFT_ANKLE, (int)BoneCT_SWAT::BONE_LEFT_ANKLE}, {(int)DesiredBones::BONE_LEFT_SOLE, (int)BoneCT_SWAT::BONE_LEFT_SOLE}, {(int)DesiredBones::BONE_RIGHT_BUTTCHEEK, (int)BoneCT_SWAT::BONE_RIGHT_BUTTCHEEK}, {(int)DesiredBones::BONE_RIGHT_THIGH, (int)BoneCT_SWAT::BONE_RIGHT_THIGH}, {(int)DesiredBones::BONE_RIGHT_KNEE, (int)BoneCT_SWAT::BONE_RIGHT_KNEE}, {(int)DesiredBones::BONE_RIGHT_ANKLE, (int)BoneCT_SWAT::BONE_RIGHT_ANKLE}, {(int)DesiredBones::BONE_RIGHT_SOLE, (int)BoneCT_SWAT::BONE_RIGHT_SOLE}}; /* Office */ enum class BoneT_Anarchist : int { INVALID = -1, BONE_PELVIS = 0, LEAN_ROOT, CAM_DRIVER, BONE_HIP, BONE_LOWER_SPINAL_COLUMN, BONE_MIDDLE_SPINAL_COLUMN, BONE_UPPER_SPINAL_COLUMN, BONE_NECK, BONE_HEAD, BONE_LEFT_COLLARBONE = 11, BONE_LEFT_SHOULDER = 12, BONE_LEFT_ARMPIT = 37, BONE_LEFT_ELBOW = 13, BONE_LEFT_FOREARM = 35, BONE_LEFT_WRIST = 14, BONE_RIGHT_COLLARBONE = 39, BONE_RIGHT_SHOULDER = 40, BONE_RIGHT_ARMPIT = 65, BONE_RIGHT_ELBOW = 41, BONE_RIGHT_FOREARM = 63, BONE_RIGHT_WRIST = 42, BONE_LEFT_BUTTCHEEK = 67, BONE_LEFT_THIGH = 72, BONE_LEFT_KNEE = 68, BONE_LEFT_ANKLE = 69, BONE_LEFT_SOLE = 71, BONE_RIGHT_BUTTCHEEK = 74, BONE_RIGHT_THIGH = 79, BONE_RIGHT_KNEE = 75, BONE_RIGHT_ANKLE = 76, BONE_RIGHT_SOLE = 78 }; static const std::map BoneMapT_Anarchist = { {(int)DesiredBones::BONE_PELVIS, (int)BoneT_Anarchist::BONE_PELVIS}, {(int)DesiredBones::BONE_HIP, (int)BoneT_Anarchist::BONE_HIP}, {(int)DesiredBones::BONE_LOWER_SPINAL_COLUMN, (int)BoneT_Anarchist::BONE_LOWER_SPINAL_COLUMN}, {(int)DesiredBones::BONE_MIDDLE_SPINAL_COLUMN, (int)BoneT_Anarchist::BONE_MIDDLE_SPINAL_COLUMN}, {(int)DesiredBones::BONE_UPPER_SPINAL_COLUMN, (int)BoneT_Anarchist::BONE_UPPER_SPINAL_COLUMN}, {(int)DesiredBones::BONE_NECK, (int)BoneT_Anarchist::BONE_NECK}, {(int)DesiredBones::BONE_HEAD, (int)BoneT_Anarchist::BONE_HEAD}, {(int)DesiredBones::BONE_LEFT_COLLARBONE, (int)BoneT_Anarchist::BONE_LEFT_COLLARBONE}, {(int)DesiredBones::BONE_LEFT_SHOULDER, (int)BoneT_Anarchist::BONE_LEFT_SHOULDER}, {(int)DesiredBones::BONE_LEFT_ARMPIT, (int)BoneT_Anarchist::BONE_LEFT_ARMPIT}, {(int)DesiredBones::BONE_LEFT_BICEP, -1}, {(int)DesiredBones::BONE_LEFT_ELBOW, (int)BoneT_Anarchist::BONE_LEFT_ELBOW}, {(int)DesiredBones::BONE_LEFT_FOREARM, (int)BoneT_Anarchist::BONE_LEFT_FOREARM}, {(int)DesiredBones::BONE_LEFT_WRIST, (int)BoneT_Anarchist::BONE_LEFT_WRIST}, {(int)DesiredBones::BONE_RIGHT_COLLARBONE, (int)BoneT_Anarchist::BONE_RIGHT_COLLARBONE}, {(int)DesiredBones::BONE_RIGHT_SHOULDER, (int)BoneT_Anarchist::BONE_RIGHT_SHOULDER}, {(int)DesiredBones::BONE_RIGHT_ARMPIT, (int)BoneT_Anarchist::BONE_RIGHT_ARMPIT}, {(int)DesiredBones::BONE_RIGHT_BICEP, -1}, {(int)DesiredBones::BONE_RIGHT_ELBOW, (int)BoneT_Anarchist::BONE_RIGHT_ELBOW}, {(int)DesiredBones::BONE_RIGHT_FOREARM, (int)BoneT_Anarchist::BONE_RIGHT_FOREARM}, {(int)DesiredBones::BONE_RIGHT_WRIST, (int)BoneT_Anarchist::BONE_RIGHT_WRIST}, {(int)DesiredBones::BONE_LEFT_BUTTCHEEK, (int)BoneT_Anarchist::BONE_LEFT_BUTTCHEEK}, {(int)DesiredBones::BONE_LEFT_THIGH, (int)BoneT_Anarchist::BONE_LEFT_THIGH}, {(int)DesiredBones::BONE_LEFT_KNEE, (int)BoneT_Anarchist::BONE_LEFT_KNEE}, {(int)DesiredBones::BONE_LEFT_ANKLE, (int)BoneT_Anarchist::BONE_LEFT_ANKLE}, {(int)DesiredBones::BONE_LEFT_SOLE, (int)BoneT_Anarchist::BONE_LEFT_SOLE}, {(int)DesiredBones::BONE_RIGHT_BUTTCHEEK, (int)BoneT_Anarchist::BONE_RIGHT_BUTTCHEEK}, {(int)DesiredBones::BONE_RIGHT_THIGH, (int)BoneT_Anarchist::BONE_RIGHT_THIGH}, {(int)DesiredBones::BONE_RIGHT_KNEE, (int)BoneT_Anarchist::BONE_RIGHT_KNEE}, {(int)DesiredBones::BONE_RIGHT_ANKLE, (int)BoneT_Anarchist::BONE_RIGHT_ANKLE}, {(int)DesiredBones::BONE_RIGHT_SOLE, (int)BoneT_Anarchist::BONE_RIGHT_SOLE}}; enum class BoneT_Balkan : int { INVALID = -1, BONE_PELVIS = 0, LEAN_ROOT, CAM_DRIVER, BONE_HIP, BONE_LOWER_SPINAL_COLUMN, BONE_MIDDLE_SPINAL_COLUMN, BONE_UPPER_SPINAL_COLUMN, BONE_NECK, BONE_HEAD, BONE_LEFT_COLLARBONE = 9, BONE_LEFT_SHOULDER = 10, BONE_LEFT_ARMPIT = 35, BONE_LEFT_BICEP = 36, BONE_LEFT_ELBOW = 11, BONE_LEFT_FOREARM = 33, BONE_LEFT_WRIST = 12, BONE_RIGHT_COLLARBONE = 37, BONE_RIGHT_SHOULDER = 38, BONE_RIGHT_ARMPIT = 63, BONE_RIGHT_BICEP = 64, BONE_RIGHT_ELBOW = 39, BONE_RIGHT_FOREARM = 61, BONE_RIGHT_WRIST = 40, BONE_LEFT_BUTTCHEEK = 65, BONE_LEFT_THIGH = 70, BONE_LEFT_KNEE = 66, BONE_LEFT_ANKLE = 67, BONE_LEFT_SOLE = 69, BONE_RIGHT_BUTTCHEEK = 72, BONE_RIGHT_THIGH = 77, BONE_RIGHT_KNEE = 73, BONE_RIGHT_ANKLE = 74, BONE_RIGHT_SOLE = 76 }; static const std::map BoneMapT_Balkan = { {(int)DesiredBones::BONE_PELVIS, (int)BoneT_Balkan::BONE_PELVIS}, {(int)DesiredBones::BONE_HIP, (int)BoneT_Balkan::BONE_HIP}, {(int)DesiredBones::BONE_LOWER_SPINAL_COLUMN, (int)BoneT_Balkan::BONE_LOWER_SPINAL_COLUMN}, {(int)DesiredBones::BONE_MIDDLE_SPINAL_COLUMN, (int)BoneT_Balkan::BONE_MIDDLE_SPINAL_COLUMN}, {(int)DesiredBones::BONE_UPPER_SPINAL_COLUMN, (int)BoneT_Balkan::BONE_UPPER_SPINAL_COLUMN}, {(int)DesiredBones::BONE_NECK, (int)BoneT_Balkan::BONE_NECK}, {(int)DesiredBones::BONE_HEAD, (int)BoneT_Balkan::BONE_HEAD}, {(int)DesiredBones::BONE_LEFT_COLLARBONE, (int)BoneT_Balkan::BONE_LEFT_COLLARBONE}, {(int)DesiredBones::BONE_LEFT_SHOULDER, (int)BoneT_Balkan::BONE_LEFT_SHOULDER}, {(int)DesiredBones::BONE_LEFT_ARMPIT, (int)BoneT_Balkan::BONE_LEFT_ARMPIT}, {(int)DesiredBones::BONE_LEFT_BICEP, (int)BoneT_Balkan::BONE_LEFT_BICEP}, {(int)DesiredBones::BONE_LEFT_ELBOW, (int)BoneT_Balkan::BONE_LEFT_ELBOW}, {(int)DesiredBones::BONE_LEFT_FOREARM, (int)BoneT_Balkan::BONE_LEFT_FOREARM}, {(int)DesiredBones::BONE_LEFT_WRIST, (int)BoneT_Balkan::BONE_LEFT_WRIST}, {(int)DesiredBones::BONE_RIGHT_COLLARBONE, (int)BoneT_Balkan::BONE_RIGHT_COLLARBONE}, {(int)DesiredBones::BONE_RIGHT_SHOULDER, (int)BoneT_Balkan::BONE_RIGHT_SHOULDER}, {(int)DesiredBones::BONE_RIGHT_ARMPIT, (int)BoneT_Balkan::BONE_RIGHT_ARMPIT}, {(int)DesiredBones::BONE_RIGHT_BICEP, (int)BoneT_Balkan::BONE_RIGHT_BICEP}, {(int)DesiredBones::BONE_RIGHT_ELBOW, (int)BoneT_Balkan::BONE_RIGHT_ELBOW}, {(int)DesiredBones::BONE_RIGHT_FOREARM, (int)BoneT_Balkan::BONE_RIGHT_FOREARM}, {(int)DesiredBones::BONE_RIGHT_WRIST, (int)BoneT_Balkan::BONE_RIGHT_WRIST}, {(int)DesiredBones::BONE_LEFT_BUTTCHEEK, (int)BoneT_Balkan::BONE_LEFT_BUTTCHEEK}, {(int)DesiredBones::BONE_LEFT_THIGH, (int)BoneT_Balkan::BONE_LEFT_THIGH}, {(int)DesiredBones::BONE_LEFT_KNEE, (int)BoneT_Balkan::BONE_LEFT_KNEE}, {(int)DesiredBones::BONE_LEFT_ANKLE, (int)BoneT_Balkan::BONE_LEFT_ANKLE}, {(int)DesiredBones::BONE_LEFT_SOLE, (int)BoneT_Balkan::BONE_LEFT_SOLE}, {(int)DesiredBones::BONE_RIGHT_BUTTCHEEK, (int)BoneT_Balkan::BONE_RIGHT_BUTTCHEEK}, {(int)DesiredBones::BONE_RIGHT_THIGH, (int)BoneT_Balkan::BONE_RIGHT_THIGH}, {(int)DesiredBones::BONE_RIGHT_KNEE, (int)BoneT_Balkan::BONE_RIGHT_KNEE}, {(int)DesiredBones::BONE_RIGHT_ANKLE, (int)BoneT_Balkan::BONE_RIGHT_ANKLE}, {(int)DesiredBones::BONE_RIGHT_SOLE, (int)BoneT_Balkan::BONE_RIGHT_SOLE}}; /* Dust, Dust2, Mirage */ enum class BoneT_Leet : int { INVALID = -1, BONE_PELVIS = 0, LEAN_ROOT, CAM_DRIVER, BONE_HIP, BONE_LOWER_SPINAL_COLUMN, BONE_MIDDLE_SPINAL_COLUMN, BONE_UPPER_SPINAL_COLUMN, BONE_NECK, BONE_HEAD, BONE_LEFT_COLLARBONE = 9, BONE_LEFT_SHOULDER = 10, BONE_LEFT_ARMPIT = 35, BONE_LEFT_BICEP = 36, BONE_LEFT_ELBOW = 11, BONE_LEFT_FOREARM = 33, BONE_LEFT_WRIST = 12, BONE_RIGHT_COLLARBONE = 37, BONE_RIGHT_SHOULDER = 38, BONE_RIGHT_ARMPIT = 63, BONE_RIGHT_BICEP = 64, BONE_RIGHT_ELBOW = 39, BONE_RIGHT_FOREARM = 61, BONE_RIGHT_WRIST = 40, BONE_LEFT_BUTTCHEEK = 65, BONE_LEFT_THIGH = 70, BONE_LEFT_KNEE = 66, BONE_LEFT_ANKLE = 67, BONE_LEFT_SOLE = 68, BONE_RIGHT_BUTTCHEEK = 72, BONE_RIGHT_THIGH = 77, BONE_RIGHT_KNEE = 73, BONE_RIGHT_ANKLE = 74, BONE_RIGHT_SOLE = 75 }; static const std::map BoneMapT_Leet = { {(int)DesiredBones::BONE_PELVIS, (int)BoneT_Leet::BONE_PELVIS}, {(int)DesiredBones::BONE_HIP, (int)BoneT_Leet::BONE_HIP}, {(int)DesiredBones::BONE_LOWER_SPINAL_COLUMN, (int)BoneT_Leet::BONE_LOWER_SPINAL_COLUMN}, {(int)DesiredBones::BONE_MIDDLE_SPINAL_COLUMN, (int)BoneT_Leet::BONE_MIDDLE_SPINAL_COLUMN}, {(int)DesiredBones::BONE_UPPER_SPINAL_COLUMN, (int)BoneT_Leet::BONE_UPPER_SPINAL_COLUMN}, {(int)DesiredBones::BONE_NECK, (int)BoneT_Leet::BONE_NECK}, {(int)DesiredBones::BONE_HEAD, (int)BoneT_Leet::BONE_HEAD}, {(int)DesiredBones::BONE_LEFT_COLLARBONE, (int)BoneT_Leet::BONE_LEFT_COLLARBONE}, {(int)DesiredBones::BONE_LEFT_SHOULDER, (int)BoneT_Leet::BONE_LEFT_SHOULDER}, {(int)DesiredBones::BONE_LEFT_ARMPIT, (int)BoneT_Leet::BONE_LEFT_ARMPIT}, {(int)DesiredBones::BONE_LEFT_BICEP, (int)BoneT_Leet::BONE_LEFT_BICEP}, {(int)DesiredBones::BONE_LEFT_ELBOW, (int)BoneT_Leet::BONE_LEFT_ELBOW}, {(int)DesiredBones::BONE_LEFT_FOREARM, (int)BoneT_Leet::BONE_LEFT_FOREARM}, {(int)DesiredBones::BONE_LEFT_WRIST, (int)BoneT_Leet::BONE_LEFT_WRIST}, {(int)DesiredBones::BONE_RIGHT_COLLARBONE, (int)BoneT_Leet::BONE_RIGHT_COLLARBONE}, {(int)DesiredBones::BONE_RIGHT_SHOULDER, (int)BoneT_Leet::BONE_RIGHT_SHOULDER}, {(int)DesiredBones::BONE_RIGHT_ARMPIT, (int)BoneT_Leet::BONE_RIGHT_ARMPIT}, {(int)DesiredBones::BONE_RIGHT_BICEP, (int)BoneT_Leet::BONE_RIGHT_BICEP}, {(int)DesiredBones::BONE_RIGHT_ELBOW, (int)BoneT_Leet::BONE_RIGHT_ELBOW}, {(int)DesiredBones::BONE_RIGHT_FOREARM, (int)BoneT_Leet::BONE_RIGHT_FOREARM}, {(int)DesiredBones::BONE_RIGHT_WRIST, (int)BoneT_Leet::BONE_RIGHT_WRIST}, {(int)DesiredBones::BONE_LEFT_BUTTCHEEK, (int)BoneT_Leet::BONE_LEFT_BUTTCHEEK}, {(int)DesiredBones::BONE_LEFT_THIGH, (int)BoneT_Leet::BONE_LEFT_THIGH}, {(int)DesiredBones::BONE_LEFT_KNEE, (int)BoneT_Leet::BONE_LEFT_KNEE}, {(int)DesiredBones::BONE_LEFT_ANKLE, (int)BoneT_Leet::BONE_LEFT_ANKLE}, {(int)DesiredBones::BONE_LEFT_SOLE, (int)BoneT_Leet::BONE_LEFT_SOLE}, {(int)DesiredBones::BONE_RIGHT_BUTTCHEEK, (int)BoneT_Leet::BONE_RIGHT_BUTTCHEEK}, {(int)DesiredBones::BONE_RIGHT_THIGH, (int)BoneT_Leet::BONE_RIGHT_THIGH}, {(int)DesiredBones::BONE_RIGHT_KNEE, (int)BoneT_Leet::BONE_RIGHT_KNEE}, {(int)DesiredBones::BONE_RIGHT_ANKLE, (int)BoneT_Leet::BONE_RIGHT_ANKLE}, {(int)DesiredBones::BONE_RIGHT_SOLE, (int)BoneT_Leet::BONE_RIGHT_SOLE}}; enum class BoneT_Leet2 : int { INVALID = -1, BONE_PELVIS = 0, LEAN_ROOT, CAM_DRIVER, BONE_HIP, BONE_LOWER_SPINAL_COLUMN, BONE_MIDDLE_SPINAL_COLUMN, BONE_UPPER_SPINAL_COLUMN, BONE_NECK, BONE_HEAD, BONE_LEFT_COLLARBONE = 10, BONE_LEFT_SHOULDER = 11, BONE_LEFT_ARMPIT = 11, BONE_LEFT_BICEP = 37, BONE_LEFT_ELBOW = 12, BONE_LEFT_FOREARM = 35, BONE_LEFT_WRIST = 13, BONE_RIGHT_COLLARBONE = 38, BONE_RIGHT_SHOULDER = 39, BONE_RIGHT_ARMPIT = 39, BONE_RIGHT_BICEP = 65, BONE_RIGHT_ELBOW = 40, BONE_RIGHT_FOREARM = 63, BONE_RIGHT_WRIST = 41, BONE_LEFT_BUTTCHEEK = 66, BONE_LEFT_THIGH = 71, BONE_LEFT_KNEE = 67, BONE_LEFT_ANKLE = 68, BONE_LEFT_SOLE = 69, BONE_RIGHT_BUTTCHEEK = 73, BONE_RIGHT_THIGH = 78, BONE_RIGHT_KNEE = 74, BONE_RIGHT_ANKLE = 75, BONE_RIGHT_SOLE = 77 }; static const std::map BoneMapT_Leet2 = { {(int)DesiredBones::BONE_PELVIS, (int)BoneT_Leet2::BONE_PELVIS}, {(int)DesiredBones::BONE_HIP, (int)BoneT_Leet2::BONE_HIP}, {(int)DesiredBones::BONE_LOWER_SPINAL_COLUMN, (int)BoneT_Leet2::BONE_LOWER_SPINAL_COLUMN}, {(int)DesiredBones::BONE_MIDDLE_SPINAL_COLUMN, (int)BoneT_Leet2::BONE_MIDDLE_SPINAL_COLUMN}, {(int)DesiredBones::BONE_UPPER_SPINAL_COLUMN, (int)BoneT_Leet2::BONE_UPPER_SPINAL_COLUMN}, {(int)DesiredBones::BONE_NECK, (int)BoneT_Leet2::BONE_NECK}, {(int)DesiredBones::BONE_HEAD, (int)BoneT_Leet2::BONE_HEAD}, {(int)DesiredBones::BONE_LEFT_COLLARBONE, (int)BoneT_Leet2::BONE_LEFT_COLLARBONE}, {(int)DesiredBones::BONE_LEFT_SHOULDER, (int)BoneT_Leet2::BONE_LEFT_SHOULDER}, {(int)DesiredBones::BONE_LEFT_ARMPIT, (int)BoneT_Leet2::BONE_LEFT_ARMPIT}, {(int)DesiredBones::BONE_LEFT_BICEP, (int)BoneT_Leet2::BONE_LEFT_BICEP}, {(int)DesiredBones::BONE_LEFT_ELBOW, (int)BoneT_Leet2::BONE_LEFT_ELBOW}, {(int)DesiredBones::BONE_LEFT_FOREARM, (int)BoneT_Leet2::BONE_LEFT_FOREARM}, {(int)DesiredBones::BONE_LEFT_WRIST, (int)BoneT_Leet2::BONE_LEFT_WRIST}, {(int)DesiredBones::BONE_RIGHT_COLLARBONE, (int)BoneT_Leet2::BONE_RIGHT_COLLARBONE}, {(int)DesiredBones::BONE_RIGHT_SHOULDER, (int)BoneT_Leet2::BONE_RIGHT_SHOULDER}, {(int)DesiredBones::BONE_RIGHT_ARMPIT, (int)BoneT_Leet2::BONE_RIGHT_ARMPIT}, {(int)DesiredBones::BONE_RIGHT_BICEP, (int)BoneT_Leet2::BONE_RIGHT_BICEP}, {(int)DesiredBones::BONE_RIGHT_ELBOW, (int)BoneT_Leet2::BONE_RIGHT_ELBOW}, {(int)DesiredBones::BONE_RIGHT_FOREARM, (int)BoneT_Leet2::BONE_RIGHT_FOREARM}, {(int)DesiredBones::BONE_RIGHT_WRIST, (int)BoneT_Leet2::BONE_RIGHT_WRIST}, {(int)DesiredBones::BONE_LEFT_BUTTCHEEK, (int)BoneT_Leet2::BONE_LEFT_BUTTCHEEK}, {(int)DesiredBones::BONE_LEFT_THIGH, (int)BoneT_Leet2::BONE_LEFT_THIGH}, {(int)DesiredBones::BONE_LEFT_KNEE, (int)BoneT_Leet2::BONE_LEFT_KNEE}, {(int)DesiredBones::BONE_LEFT_ANKLE, (int)BoneT_Leet2::BONE_LEFT_ANKLE}, {(int)DesiredBones::BONE_LEFT_SOLE, (int)BoneT_Leet2::BONE_LEFT_SOLE}, {(int)DesiredBones::BONE_RIGHT_BUTTCHEEK, (int)BoneT_Leet2::BONE_RIGHT_BUTTCHEEK}, {(int)DesiredBones::BONE_RIGHT_THIGH, (int)BoneT_Leet2::BONE_RIGHT_THIGH}, {(int)DesiredBones::BONE_RIGHT_KNEE, (int)BoneT_Leet2::BONE_RIGHT_KNEE}, {(int)DesiredBones::BONE_RIGHT_ANKLE, (int)BoneT_Leet2::BONE_RIGHT_ANKLE}, {(int)DesiredBones::BONE_RIGHT_SOLE, (int)BoneT_Leet2::BONE_RIGHT_SOLE}}; /* Aztec, Cobblestone, Assault, Militia, Cache, Nuke */ enum class BoneT_Phoenix : int { INVALID = -1, BONE_PELVIS = 0, LEAN_ROOT, CAM_DRIVER, BONE_HIP, BONE_LOWER_SPINAL_COLUMN, BONE_MIDDLE_SPINAL_COLUMN, BONE_UPPER_SPINAL_COLUMN, BONE_NECK, BONE_HEAD, BONE_LEFT_COLLARBONE = 9, BONE_LEFT_SHOULDER = 10, BONE_LEFT_ARMPIT = 35, BONE_LEFT_BICEP = 36, BONE_LEFT_ELBOW = 11, BONE_LEFT_FOREARM = 33, BONE_LEFT_WRIST = 12, BONE_RIGHT_COLLARBONE = 37, BONE_RIGHT_SHOULDER = 38, BONE_RIGHT_ARMPIT = 63, BONE_RIGHT_BICEP = 64, BONE_RIGHT_ELBOW = 39, BONE_RIGHT_FOREARM = 61, BONE_RIGHT_WRIST = 40, BONE_LEFT_BUTTCHEEK = 65, BONE_LEFT_THIGH = 70, BONE_LEFT_KNEE = 66, BONE_LEFT_ANKLE = 67, BONE_LEFT_SOLE = 69, BONE_RIGHT_BUTTCHEEK = 72, BONE_RIGHT_THIGH = 77, BONE_RIGHT_KNEE = 73, BONE_RIGHT_ANKLE = 74, BONE_RIGHT_SOLE = 76 }; static const std::map BoneMapT_Phoenix = { {(int)DesiredBones::BONE_PELVIS, (int)BoneT_Phoenix::BONE_PELVIS}, {(int)DesiredBones::BONE_HIP, (int)BoneT_Phoenix::BONE_HIP}, {(int)DesiredBones::BONE_LOWER_SPINAL_COLUMN, (int)BoneT_Phoenix::BONE_LOWER_SPINAL_COLUMN}, {(int)DesiredBones::BONE_MIDDLE_SPINAL_COLUMN, (int)BoneT_Phoenix::BONE_MIDDLE_SPINAL_COLUMN}, {(int)DesiredBones::BONE_UPPER_SPINAL_COLUMN, (int)BoneT_Phoenix::BONE_UPPER_SPINAL_COLUMN}, {(int)DesiredBones::BONE_NECK, (int)BoneT_Phoenix::BONE_NECK}, {(int)DesiredBones::BONE_HEAD, (int)BoneT_Phoenix::BONE_HEAD}, {(int)DesiredBones::BONE_LEFT_COLLARBONE, (int)BoneT_Phoenix::BONE_LEFT_COLLARBONE}, {(int)DesiredBones::BONE_LEFT_SHOULDER, (int)BoneT_Phoenix::BONE_LEFT_SHOULDER}, {(int)DesiredBones::BONE_LEFT_ARMPIT, (int)BoneT_Phoenix::BONE_LEFT_ARMPIT}, {(int)DesiredBones::BONE_LEFT_BICEP, (int)BoneT_Phoenix::BONE_LEFT_BICEP}, {(int)DesiredBones::BONE_LEFT_ELBOW, (int)BoneT_Phoenix::BONE_LEFT_ELBOW}, {(int)DesiredBones::BONE_LEFT_FOREARM, (int)BoneT_Phoenix::BONE_LEFT_FOREARM}, {(int)DesiredBones::BONE_LEFT_WRIST, (int)BoneT_Phoenix::BONE_LEFT_WRIST}, {(int)DesiredBones::BONE_RIGHT_COLLARBONE, (int)BoneT_Phoenix::BONE_RIGHT_COLLARBONE}, {(int)DesiredBones::BONE_RIGHT_SHOULDER, (int)BoneT_Phoenix::BONE_RIGHT_SHOULDER}, {(int)DesiredBones::BONE_RIGHT_ARMPIT, (int)BoneT_Phoenix::BONE_RIGHT_ARMPIT}, {(int)DesiredBones::BONE_RIGHT_BICEP, (int)BoneT_Phoenix::BONE_RIGHT_BICEP}, {(int)DesiredBones::BONE_RIGHT_ELBOW, (int)BoneT_Phoenix::BONE_RIGHT_ELBOW}, {(int)DesiredBones::BONE_RIGHT_FOREARM, (int)BoneT_Phoenix::BONE_RIGHT_FOREARM}, {(int)DesiredBones::BONE_RIGHT_WRIST, (int)BoneT_Phoenix::BONE_RIGHT_WRIST}, {(int)DesiredBones::BONE_LEFT_BUTTCHEEK, (int)BoneT_Phoenix::BONE_LEFT_BUTTCHEEK}, {(int)DesiredBones::BONE_LEFT_THIGH, (int)BoneT_Phoenix::BONE_LEFT_THIGH}, {(int)DesiredBones::BONE_LEFT_KNEE, (int)BoneT_Phoenix::BONE_LEFT_KNEE}, {(int)DesiredBones::BONE_LEFT_ANKLE, (int)BoneT_Phoenix::BONE_LEFT_ANKLE}, {(int)DesiredBones::BONE_LEFT_SOLE, (int)BoneT_Phoenix::BONE_LEFT_SOLE}, {(int)DesiredBones::BONE_RIGHT_BUTTCHEEK, (int)BoneT_Phoenix::BONE_RIGHT_BUTTCHEEK}, {(int)DesiredBones::BONE_RIGHT_THIGH, (int)BoneT_Phoenix::BONE_RIGHT_THIGH}, {(int)DesiredBones::BONE_RIGHT_KNEE, (int)BoneT_Phoenix::BONE_RIGHT_KNEE}, {(int)DesiredBones::BONE_RIGHT_ANKLE, (int)BoneT_Phoenix::BONE_RIGHT_ANKLE}, {(int)DesiredBones::BONE_RIGHT_SOLE, (int)BoneT_Phoenix::BONE_RIGHT_SOLE}}; /* Bank, Vertigo, Safehouse */ enum class BoneT_Professional : int { INVALID = -1, BONE_PELVIS = 0, LEAN_ROOT, CAM_DRIVER, BONE_HIP, BONE_LOWER_SPINAL_COLUMN, BONE_MIDDLE_SPINAL_COLUMN, BONE_UPPER_SPINAL_COLUMN, BONE_NECK, BONE_HEAD, BONE_LEFT_COLLARBONE = 10, BONE_LEFT_SHOULDER = 11, BONE_LEFT_ARMPIT = 36, BONE_LEFT_BICEP = 37, BONE_LEFT_ELBOW = 12, BONE_LEFT_FOREARM = 34, BONE_LEFT_WRIST = 13, BONE_RIGHT_COLLARBONE = 38, BONE_RIGHT_SHOULDER = 39, BONE_RIGHT_ARMPIT = 64, BONE_RIGHT_BICEP = 65, BONE_RIGHT_ELBOW = 40, BONE_RIGHT_FOREARM = 62, BONE_RIGHT_WRIST = 41, BONE_LEFT_BUTTCHEEK = 70, BONE_LEFT_THIGH = 75, BONE_LEFT_KNEE = 71, BONE_LEFT_ANKLE = 72, BONE_LEFT_SOLE = 74, BONE_RIGHT_BUTTCHEEK = 77, BONE_RIGHT_THIGH = 82, BONE_RIGHT_KNEE = 78, BONE_RIGHT_ANKLE = 79, BONE_RIGHT_SOLE = 80, }; static const std::map BoneMapT_Professional = { {(int)DesiredBones::BONE_PELVIS, (int)BoneT_Professional::BONE_PELVIS}, {(int)DesiredBones::BONE_HIP, (int)BoneT_Professional::BONE_HIP}, {(int)DesiredBones::BONE_LOWER_SPINAL_COLUMN, (int)BoneT_Professional::BONE_LOWER_SPINAL_COLUMN}, {(int)DesiredBones::BONE_MIDDLE_SPINAL_COLUMN, (int)BoneT_Professional::BONE_MIDDLE_SPINAL_COLUMN}, {(int)DesiredBones::BONE_UPPER_SPINAL_COLUMN, (int)BoneT_Professional::BONE_UPPER_SPINAL_COLUMN}, {(int)DesiredBones::BONE_NECK, (int)BoneT_Professional::BONE_NECK}, {(int)DesiredBones::BONE_HEAD, (int)BoneT_Professional::BONE_HEAD}, {(int)DesiredBones::BONE_LEFT_COLLARBONE, (int)BoneT_Professional::BONE_LEFT_COLLARBONE}, {(int)DesiredBones::BONE_LEFT_SHOULDER, (int)BoneT_Professional::BONE_LEFT_SHOULDER}, {(int)DesiredBones::BONE_LEFT_ARMPIT, (int)BoneT_Professional::BONE_LEFT_ARMPIT}, {(int)DesiredBones::BONE_LEFT_BICEP, (int)BoneT_Professional::BONE_LEFT_BICEP}, {(int)DesiredBones::BONE_LEFT_ELBOW, (int)BoneT_Professional::BONE_LEFT_ELBOW}, {(int)DesiredBones::BONE_LEFT_FOREARM, (int)BoneT_Professional::BONE_LEFT_FOREARM}, {(int)DesiredBones::BONE_LEFT_WRIST, (int)BoneT_Professional::BONE_LEFT_WRIST}, {(int)DesiredBones::BONE_RIGHT_COLLARBONE, (int)BoneT_Professional::BONE_RIGHT_COLLARBONE}, {(int)DesiredBones::BONE_RIGHT_SHOULDER, (int)BoneT_Professional::BONE_RIGHT_SHOULDER}, {(int)DesiredBones::BONE_RIGHT_ARMPIT, (int)BoneT_Professional::BONE_RIGHT_ARMPIT}, {(int)DesiredBones::BONE_RIGHT_BICEP, (int)BoneT_Professional::BONE_RIGHT_BICEP}, {(int)DesiredBones::BONE_RIGHT_ELBOW, (int)BoneT_Professional::BONE_RIGHT_ELBOW}, {(int)DesiredBones::BONE_RIGHT_FOREARM, (int)BoneT_Professional::BONE_RIGHT_FOREARM}, {(int)DesiredBones::BONE_RIGHT_WRIST, (int)BoneT_Professional::BONE_RIGHT_WRIST}, {(int)DesiredBones::BONE_LEFT_BUTTCHEEK, (int)BoneT_Professional::BONE_LEFT_BUTTCHEEK}, {(int)DesiredBones::BONE_LEFT_THIGH, (int)BoneT_Professional::BONE_LEFT_THIGH}, {(int)DesiredBones::BONE_LEFT_KNEE, (int)BoneT_Professional::BONE_LEFT_KNEE}, {(int)DesiredBones::BONE_LEFT_ANKLE, (int)BoneT_Professional::BONE_LEFT_ANKLE}, {(int)DesiredBones::BONE_LEFT_SOLE, (int)BoneT_Professional::BONE_LEFT_SOLE}, {(int)DesiredBones::BONE_RIGHT_BUTTCHEEK, (int)BoneT_Professional::BONE_RIGHT_BUTTCHEEK}, {(int)DesiredBones::BONE_RIGHT_THIGH, (int)BoneT_Professional::BONE_RIGHT_THIGH}, {(int)DesiredBones::BONE_RIGHT_KNEE, (int)BoneT_Professional::BONE_RIGHT_KNEE}, {(int)DesiredBones::BONE_RIGHT_ANKLE, (int)BoneT_Professional::BONE_RIGHT_ANKLE}, {(int)DesiredBones::BONE_RIGHT_SOLE, (int)BoneT_Professional::BONE_RIGHT_SOLE}}; /* Inferno, Italy */ enum class BoneT_Separatist : int { INVALID = -1, BONE_PELVIS = 0, LEAN_ROOT, CAM_DRIVER, BONE_HIP, BONE_LOWER_SPINAL_COLUMN, BONE_MIDDLE_SPINAL_COLUMN, BONE_UPPER_SPINAL_COLUMN, BONE_NECK, BONE_HEAD, BONE_LEFT_COLLARBONE = 9, BONE_LEFT_SHOULDER = 10, BONE_LEFT_ARMPIT = 35, BONE_LEFT_BICEP = 36, BONE_LEFT_ELBOW = 11, BONE_LEFT_FOREARM = 33, BONE_LEFT_WRIST = 12, BONE_RIGHT_COLLARBONE = 37, BONE_RIGHT_SHOULDER = 38, BONE_RIGHT_ARMPIT = 63, BONE_RIGHT_BICEP = 64, BONE_RIGHT_ELBOW = 39, BONE_RIGHT_FOREARM = 61, BONE_RIGHT_WRIST = 40, BONE_LEFT_BUTTCHEEK = 65, BONE_LEFT_THIGH = 70, BONE_LEFT_KNEE = 66, BONE_LEFT_ANKLE = 67, BONE_LEFT_SOLE = 79, BONE_RIGHT_BUTTCHEEK = 72, BONE_RIGHT_THIGH = 77, BONE_RIGHT_KNEE = 73, BONE_RIGHT_ANKLE = 74, BONE_RIGHT_SOLE = 75 }; static const std::map BoneMapT_Separatist = { {(int)DesiredBones::BONE_PELVIS, (int)BoneT_Separatist::BONE_PELVIS}, {(int)DesiredBones::BONE_HIP, (int)BoneT_Separatist::BONE_HIP}, {(int)DesiredBones::BONE_LOWER_SPINAL_COLUMN, (int)BoneT_Separatist::BONE_LOWER_SPINAL_COLUMN}, {(int)DesiredBones::BONE_MIDDLE_SPINAL_COLUMN, (int)BoneT_Separatist::BONE_MIDDLE_SPINAL_COLUMN}, {(int)DesiredBones::BONE_UPPER_SPINAL_COLUMN, (int)BoneT_Separatist::BONE_UPPER_SPINAL_COLUMN}, {(int)DesiredBones::BONE_NECK, (int)BoneT_Separatist::BONE_NECK}, {(int)DesiredBones::BONE_HEAD, (int)BoneT_Separatist::BONE_HEAD}, {(int)DesiredBones::BONE_LEFT_COLLARBONE, (int)BoneT_Separatist::BONE_LEFT_COLLARBONE}, {(int)DesiredBones::BONE_LEFT_SHOULDER, (int)BoneT_Separatist::BONE_LEFT_SHOULDER}, {(int)DesiredBones::BONE_LEFT_ARMPIT, (int)BoneT_Separatist::BONE_LEFT_ARMPIT}, {(int)DesiredBones::BONE_LEFT_BICEP, (int)BoneT_Separatist::BONE_LEFT_BICEP}, {(int)DesiredBones::BONE_LEFT_ELBOW, (int)BoneT_Separatist::BONE_LEFT_ELBOW}, {(int)DesiredBones::BONE_LEFT_FOREARM, (int)BoneT_Separatist::BONE_LEFT_FOREARM}, {(int)DesiredBones::BONE_LEFT_WRIST, (int)BoneT_Separatist::BONE_LEFT_WRIST}, {(int)DesiredBones::BONE_RIGHT_COLLARBONE, (int)BoneT_Separatist::BONE_RIGHT_COLLARBONE}, {(int)DesiredBones::BONE_RIGHT_SHOULDER, (int)BoneT_Separatist::BONE_RIGHT_SHOULDER}, {(int)DesiredBones::BONE_RIGHT_ARMPIT, (int)BoneT_Separatist::BONE_RIGHT_ARMPIT}, {(int)DesiredBones::BONE_RIGHT_BICEP, (int)BoneT_Separatist::BONE_RIGHT_BICEP}, {(int)DesiredBones::BONE_RIGHT_ELBOW, (int)BoneT_Separatist::BONE_RIGHT_ELBOW}, {(int)DesiredBones::BONE_RIGHT_FOREARM, (int)BoneT_Separatist::BONE_RIGHT_FOREARM}, {(int)DesiredBones::BONE_RIGHT_WRIST, (int)BoneT_Separatist::BONE_RIGHT_WRIST}, {(int)DesiredBones::BONE_LEFT_BUTTCHEEK, (int)BoneT_Separatist::BONE_LEFT_BUTTCHEEK}, {(int)DesiredBones::BONE_LEFT_THIGH, (int)BoneT_Separatist::BONE_LEFT_THIGH}, {(int)DesiredBones::BONE_LEFT_KNEE, (int)BoneT_Separatist::BONE_LEFT_KNEE}, {(int)DesiredBones::BONE_LEFT_ANKLE, (int)BoneT_Separatist::BONE_LEFT_ANKLE}, {(int)DesiredBones::BONE_LEFT_SOLE, (int)BoneT_Separatist::BONE_LEFT_SOLE}, {(int)DesiredBones::BONE_RIGHT_BUTTCHEEK, (int)BoneT_Separatist::BONE_RIGHT_BUTTCHEEK}, {(int)DesiredBones::BONE_RIGHT_THIGH, (int)BoneT_Separatist::BONE_RIGHT_THIGH}, {(int)DesiredBones::BONE_RIGHT_KNEE, (int)BoneT_Separatist::BONE_RIGHT_KNEE}, {(int)DesiredBones::BONE_RIGHT_ANKLE, (int)BoneT_Separatist::BONE_RIGHT_ANKLE}, {(int)DesiredBones::BONE_RIGHT_SOLE, (int)BoneT_Separatist::BONE_RIGHT_SOLE}}; enum class Hitbox : int { HITBOX_HEAD = 0, HITBOX_NECK, HITBOX_PELVIS, HITBOX_SPINE, HITBOX_LEGS, HITBOX_ARMS, }; enum class HitGroups : int { HITGROUP_GENERIC = 0, HITGROUP_HEAD, HITGROUP_CHEST, HITGROUP_STOMACH, HITGROUP_LEFTARM, HITGROUP_RIGHTARM, HITGROUP_LEFTLEG, HITGROUP_RIGHTLEG, HITGROUP_GEAR }; enum class CSWeaponType : int { WEAPONTYPE_KNIFE = 0, WEAPONTYPE_PISTOL, WEAPONTYPE_SUBMACHINEGUN, WEAPONTYPE_RIFLE, WEAPONTYPE_SHOTGUN, WEAPONTYPE_SNIPER_RIFLE, WEAPONTYPE_MACHINEGUN, WEAPONTYPE_C4, Spartan_TOP_SECRET_WEAPONTYPE_CONFIDENTIAL_DO_NOT_STEAL, WEAPONTYPE_GRENADE, WEAPONTYPE_UNKNOWN }; struct DefItem_t { DefItem_t(const char* displayName, const char* entityName, const char* entityModel, const char* killIcon = nullptr) { this->displayName = displayName; this->entityName = entityName; this->entityModel = entityModel; this->killIcon = killIcon; } const char* displayName = nullptr; const char* entityName = nullptr; const char* entityModel = nullptr; const char* killIcon = nullptr; }; struct AttribItem_t { void Reset() { this->entityQuality = -1; this->fallbackSeed = -1; this->fallbackPaintKit = -1; this->fallbackStatTrak = -1; this->fallbackStatTrak = -1; this->itemDefinitionIndex = ItemDefinitionIndex::INVALID; this->customName = ""; } ItemDefinitionIndex itemDefinitionIndex = ItemDefinitionIndex::INVALID; int fallbackPaintKit = -1; float fallbackWear = -1; int fallbackSeed = -1; int fallbackStatTrak = -1; int entityQuality = -1; std::string customName; }; enum GrenadeType : int { FLASH, SMOKE, MOLOTOV, HEGRENADE }; enum ThrowType : int { NORMAL, RUN, JUMP, WALK }; enum TracerEffects_t : int { ASSRIFLE, PISTOL, SMG, RIFLE, TASER, // Also known as "Kisak Snot" MACH, SHOT, TASER_FALLBACK, TASER_FALLBACK2, TASER_WIRE1A, TASER_WIRE2, TASER_WIRE1B, ORIGINAL, BACKUP, FIFTY_CAL, FIFTY_CAL_GLOW, FIFTY_CAL_LOW, FIFTY_CAL_LOW_GLOW, }; enum ClearFlags_t { VIEW_CLEAR_COLOR = 0x1, // 1 VIEW_CLEAR_DEPTH = 0x2, // 2 VIEW_CLEAR_FULL_TARGET = 0x4, // 4 VIEW_NO_DRAW = 0x8, // 8 VIEW_CLEAR_OBEY_STENCIL = 0x10, // 16 Draws a quad allowing stencil test to clear through portals VIEW_CLEAR_STENCIL = 0x20, // 32 }; enum RenderViewInfo_t { RENDERVIEW_UNSPECIFIED = 0, RENDERVIEW_DRAWVIEWMODEL = (1 << 0), // 1 RENDERVIEW_DRAWHUD = (1 << 1), // 2 RENDERVIEW_SUPPRESSMONITORRENDERING = (1 << 2), // 4 }; struct GrenadeInfo { GrenadeType gType; Vector pos; QAngle angle; ThrowType tType; pstring name; GrenadeInfo(GrenadeType gType, Vector pos, QAngle angle, ThrowType tType, pstring name) { this->gType = gType; this->pos = pos; this->angle = angle; this->tType = tType; this->name = name; } }; const std::map ItemDefinitionIndexMap = { {ItemDefinitionIndex::INVALID, {"<-Default->", "DEFAULT", "", ""}}, {ItemDefinitionIndex::WEAPON_DEAGLE, {"#SFUI_WPNHUD_DesertEagle", "weapon_deagle", "models/weapons/v_pist_deagle.mdl", "deagle"}}, {ItemDefinitionIndex::WEAPON_ELITE, {"#SFUI_WPNHUD_Elites", "weapon_elite", "models/weapons/v_pist_elite.mdl", "elite"}}, {ItemDefinitionIndex::WEAPON_FIVESEVEN, {"#SFUI_WPNHUD_FiveSeven", "weapon_fiveseven", "models/weapons/v_pist_fiveseven.mdl", "fiveseven"}}, {ItemDefinitionIndex::WEAPON_GLOCK, {"#SFUI_WPNHUD_Glock18", "weapon_glock", "models/weapons/v_pist_glock18.mdl", "glock"}}, {ItemDefinitionIndex::WEAPON_AK47, {"#SFUI_WPNHUD_AK47", "weapon_ak47", "models/weapons/v_rif_ak47.mdl", "ak47"}}, {ItemDefinitionIndex::WEAPON_AUG, {"#SFUI_WPNHUD_Aug", "weapon_aug", "models/weapons/v_rif_aug.mdl", "aug"}}, {ItemDefinitionIndex::WEAPON_AWP, {"#SFUI_WPNHUD_AWP", "weapon_awp", "models/weapons/v_snip_awp.mdl", "awp"}}, {ItemDefinitionIndex::WEAPON_FAMAS, {"#SFUI_WPNHUD_Famas", "weapon_famas", "models/weapons/v_rif_famas.mdl", "famas"}}, {ItemDefinitionIndex::WEAPON_G3SG1, {"#SFUI_WPNHUD_G3SG1", "weapon_g3sg1", "models/weapons/v_snip_g3sg1.mdl", "g3sg1"}}, {ItemDefinitionIndex::WEAPON_GALILAR, {"#SFUI_WPNHUD_GalilAR", "weapon_galilar", "models/weapons/v_rif_galilar.mdl", "galilar"}}, {ItemDefinitionIndex::WEAPON_M249, {"#SFUI_WPNHUD_M249", "weapon_m249", "models/weapons/v_mach_m249para.mdl", "m249"}}, {ItemDefinitionIndex::WEAPON_M4A1, {"#SFUI_WPNHUD_M4A1", "weapon_m4a1", "models/weapons/v_rif_m4a1.mdl", "m4a1"}}, {ItemDefinitionIndex::WEAPON_MAC10, {"#SFUI_WPNHUD_MAC10", "weapon_mac10", "models/weapons/v_smg_mac10.mdl", "mac10"}}, {ItemDefinitionIndex::WEAPON_P90, {"#SFUI_WPNHUD_P90", "weapon_p90", "models/weapons/v_smg_p90.mdl", "p90"}}, {ItemDefinitionIndex::WEAPON_UMP45, {"#SFUI_WPNHUD_UMP45", "weapon_ump45", "models/weapons/v_smg_ump45.mdl", "ump45"}}, {ItemDefinitionIndex::WEAPON_XM1014, {"#SFUI_WPNHUD_xm1014", "weapon_xm1014", "models/weapons/v_shot_xm1014.mdl", "xm1014"}}, {ItemDefinitionIndex::WEAPON_BIZON, {"#SFUI_WPNHUD_Bizon", "weapon_bizon", "models/weapons/v_smg_bizon.mdl", "bizon"}}, {ItemDefinitionIndex::WEAPON_MAG7, {"#SFUI_WPNHUD_Mag7", "weapon_mag7", "models/weapons/v_shot_mag7.mdl", "mag7"}}, {ItemDefinitionIndex::WEAPON_NEGEV, {"#SFUI_WPNHUD_Negev", "weapon_negev", "models/weapons/v_mach_negev.mdl", "negev"}}, {ItemDefinitionIndex::WEAPON_SAWEDOFF, {"#SFUI_WPNHUD_Sawedoff", "weapon_sawedoff", "models/weapons/v_shot_sawedoff.mdl", "sawedoff"}}, {ItemDefinitionIndex::WEAPON_TEC9, {"#SFUI_WPNHUD_Tec9", "weapon_tec9", "models/weapons/v_pist_tec9.mdl", "tec9"}}, {ItemDefinitionIndex::WEAPON_TASER, {"#SFUI_WPNHUD_Taser", "weapon_taser", "models/weapons/v_eq_taser.mdl", "taser"}}, {ItemDefinitionIndex::WEAPON_HKP2000, {"#SFUI_WPNHUD_HKP2000", "weapon_hkp2000", "models/weapons/v_pist_hkp2000.mdl", "hkp2000"}}, {ItemDefinitionIndex::WEAPON_MP7, {"#SFUI_WPNHUD_MP7", "weapon_mp7", "models/weapons/v_smg_mp7.mdl", "mp7"}}, {ItemDefinitionIndex::WEAPON_MP9, {"#SFUI_WPNHUD_MP9", "weapon_mp9", "models/weapons/v_smg_mp9.mdl", "mp9"}}, {ItemDefinitionIndex::WEAPON_NOVA, {"#SFUI_WPNHUD_Nova", "weapon_nova", "models/weapons/v_shot_nova.mdl", "nova"}}, {ItemDefinitionIndex::WEAPON_P250, {"#SFUI_WPNHUD_P250", "weapon_p250", "models/weapons/v_pist_p250.mdl", "p250"}}, {ItemDefinitionIndex::WEAPON_SCAR20, {"#SFUI_WPNHUD_SCAR20", "weapon_scar20", "models/weapons/v_snip_scar20.mdl", "scar20"}}, {ItemDefinitionIndex::WEAPON_SG556, {"#SFUI_WPNHUD_SG556", "weapon_sg556", "models/weapons/v_rif_sg556.mdl", "sg556"}}, {ItemDefinitionIndex::WEAPON_SSG08, {"#SFUI_WPNHUD_SSG08", "weapon_ssg08", "models/weapons/v_snip_ssg08.mdl", "ssg08"}}, {ItemDefinitionIndex::WEAPON_KNIFE, {"#SFUI_WPNHUD_Knife", "weapon_knife", "models/weapons/v_knife_default_ct.mdl", "knife_default_ct"}}, {ItemDefinitionIndex::WEAPON_FLASHBANG, {"#SFUI_WPNHUD_FLASHBANG", "weapon_flashbang", "models/weapons/v_eq_flashbang.mdl", "flashbang"}}, {ItemDefinitionIndex::WEAPON_HEGRENADE, {"#SFUI_WPNHUD_HE_Grenade", "weapon_hegrenade", "models/weapons/v_eq_fraggrenade.mdl", "hegrenade"}}, {ItemDefinitionIndex::WEAPON_SMOKEGRENADE, {"#SFUI_WPNHUD_Smoke_Grenade", "weapon_smokegrenade", "models/weapons/v_eq_smokegrenade.mdl", "smokegrenade"}}, {ItemDefinitionIndex::WEAPON_MOLOTOV, {"#SFUI_WPNHUD_MOLOTOV", "weapon_molotov", "models/weapons/v_eq_molotov.mdl", "inferno"}}, {ItemDefinitionIndex::WEAPON_DECOY, {"#SFUI_WPNHUD_DECOY", "weapon_decoy", "models/weapons/v_eq_decoy.mdl", "decoy"}}, {ItemDefinitionIndex::WEAPON_INCGRENADE, {"#SFUI_WPNHUD_IncGrenade", "weapon_incgrenade", "models/weapons/v_eq_incendiarygrenade.mdl", "inferno"}}, {ItemDefinitionIndex::WEAPON_C4, {"#SFUI_WPNHUD_C4", "weapon_c4", "models/weapons/v_ied.mdl"}}, {ItemDefinitionIndex::WEAPON_KNIFE_T, {"#SFUI_WPNHUD_Knife", "weapon_knife_t", "models/weapons/v_knife_default_t.mdl", "knife_t"}}, {ItemDefinitionIndex::WEAPON_M4A1_SILENCER, {"#SFUI_WPNHUD_M4_SILENCER", "weapon_m4a1_silencer", "models/weapons/v_rif_m4a1_s.mdl", "m4a1_silencer"}}, {ItemDefinitionIndex::WEAPON_USP_SILENCER, {"#SFUI_WPNHUD_USP_SILENCER", "weapon_usp_silencer", "models/weapons/v_pist_223.mdl", "usp_silencer"}}, {ItemDefinitionIndex::WEAPON_CZ75A, {"#SFUI_WPNHUD_CZ75", "weapon_cz75a", "models/weapons/v_pist_cz_75.mdl", "cz75a"}}, {ItemDefinitionIndex::WEAPON_REVOLVER, {"#SFUI_WPNHUD_REVOLVER", "weapon_revolver", "models/weapons/v_pist_revolver.mdl", "revolver"}}, {ItemDefinitionIndex::WEAPON_KNIFE_BAYONET, {"#SFUI_WPNHUD_KnifeBayonet", "weapon_knife_bayonet", "models/weapons/v_knife_bayonet.mdl", "bayonet"}}, {ItemDefinitionIndex::WEAPON_KNIFE_FLIP, {"#SFUI_WPNHUD_KnifeFlip", "weapon_knife_flip", "models/weapons/v_knife_flip.mdl", "knife_flip"}}, {ItemDefinitionIndex::WEAPON_KNIFE_GUT, {"#SFUI_WPNHUD_KnifeGut", "weapon_knife_gut", "models/weapons/v_knife_gut.mdl", "knife_gut"}}, {ItemDefinitionIndex::WEAPON_KNIFE_KARAMBIT, {"#SFUI_WPNHUD_KnifeKaram", "weapon_knife_karambit", "models/weapons/v_knife_karam.mdl", "knife_karambit"}}, {ItemDefinitionIndex::WEAPON_KNIFE_M9_BAYONET, {"#SFUI_WPNHUD_KnifeM9", "weapon_knife_m9_bayonet", "models/weapons/v_knife_m9_bay.mdl", "knife_m9_bayonet"}}, {ItemDefinitionIndex::WEAPON_KNIFE_TACTICAL, {"#SFUI_WPNHUD_KnifeTactical", "weapon_knife_tactical", "models/weapons/v_knife_tactical.mdl", "knife_tactical"}}, {ItemDefinitionIndex::WEAPON_KNIFE_FALCHION, {"#SFUI_WPNHUD_knife_falchion_advanced", "weapon_knife_falchion", "models/weapons/v_knife_falchion_advanced.mdl", "knife_falchion"}}, {ItemDefinitionIndex::WEAPON_KNIFE_SURVIVAL_BOWIE, {"#SFUI_WPNHUD_knife_survival_bowie", "weapon_knife_survival_bowie", "models/weapons/v_knife_survival_bowie.mdl", "knife_survival_bowie"}}, {ItemDefinitionIndex::WEAPON_KNIFE_BUTTERFLY, {"#SFUI_WPNHUD_Knife_Butterfly", "weapon_knife_butterfly", "models/weapons/v_knife_butterfly.mdl", "knife_butterfly"}}, {ItemDefinitionIndex::WEAPON_KNIFE_PUSH, {"#SFUI_WPNHUD_knife_push", "weapon_knife_push", "models/weapons/v_knife_push.mdl", "knife_push"}}, {ItemDefinitionIndex::GLOVE_STUDDED_BLOODHOUND, {"#CSGO_Wearable_t_studdedgloves", "studded_bloodhound_gloves", "models/weapons/v_models/arms/glove_bloodhound/v_glove_bloodhound.mdl"}}, {ItemDefinitionIndex::GLOVE_T_SIDE, {"#CSGO_Wearable_t_defaultgloves", "t_gloves", "models/weapons/v_models/arms/glove_fingerless/v_glove_fingerless.mdl"}}, {ItemDefinitionIndex::GLOVE_CT_SIDE, {"#CSGO_Wearable_ct_defaultgloves", "ct_gloves", "models/weapons/v_models/arms/glove_hardknuckle/" "v_glove_hardknuckle.mdl"}}, {ItemDefinitionIndex::GLOVE_SPORTY, {"#CSGO_Wearable_v_sporty_glove", "sporty_gloves", "models/weapons/v_models/arms/glove_sporty/v_glove_sporty.mdl"}}, {ItemDefinitionIndex::GLOVE_SLICK, {"#CSGO_Wearable_v_slick_glove", "slick_gloves", "models/weapons/v_models/arms/glove_slick/v_glove_slick.mdl"}}, {ItemDefinitionIndex::GLOVE_LEATHER_WRAP, {"#CSGO_Wearable_v_leather_handwrap", "leather_handwraps", "models/weapons/v_models/arms/glove_handwrap_leathery/" "v_glove_handwrap_leathery.mdl"}}, {ItemDefinitionIndex::GLOVE_MOTORCYCLE, {"#CSGO_Wearable_v_motorcycle_glove", "motorcycle_gloves", "models/weapons/v_models/arms/glove_motorcycle/v_glove_motorcycle.mdl"}}, {ItemDefinitionIndex::GLOVE_SPECIALIST, {"#CSGO_Wearable_v_specialist_glove", "specialist_gloves", "models/weapons/v_models/arms/glove_specialist/v_glove_specialist.mdl"}}}; #define FL_ONGROUND (1 << 0) // At rest / on the ground #define FL_DUCKING (1 << 1) // Player flag -- Player is fully crouched #define FL_WATERJUMP (1 << 2) // player jumping out of water #define FL_ONTRAIN \ (1 << 3) // Player is _controlling_ a train, so movement commands should be // ignored on client during prediction. #define FL_INRAIN (1 << 4) // Indicates the entity is standing in rain #define FL_FROZEN (1 << 5) // Player is frozen for 3rd person camera #define FL_ATCONTROLS \ (1 << 6) // Player can't move, but keeps key inputs for controlling another // entity #define FL_CLIENT (1 << 7) // Is a player #define FL_FAKECLIENT \ (1 << 8) // Fake client, simulated server side; don't send network messages // to them // NON-PLAYER SPECIFIC (i.e., not used by GameMovement or the client .dll ) -- // Can still be applied to players, though #define FL_INWATER (1 << 9) // In water #define CONTENTS_EMPTY 0 // No contents #define CONTENTS_SOLID 0x1 // an eye is never valid in a solid #define CONTENTS_WINDOW 0x2 // translucent, but not watery (glass) #define CONTENTS_AUX 0x4 #define CONTENTS_GRATE \ 0x8 // alpha-tested "grate" textures. Bullets/sight pass through, but // solids don't #define CONTENTS_SLIME 0x10 #define CONTENTS_WATER 0x20 #define CONTENTS_BLOCKLOS 0x40 // block AI line of sight #define CONTENTS_OPAQUE \ 0x80 // things that cannot be seen through (may be non-solid though) #define LAST_VISIBLE_CONTENTS CONTENTS_OPAQUE #define ALL_VISIBLE_CONTENTS \ (LAST_VISIBLE_CONTENTS | (LAST_VISIBLE_CONTENTS - 1)) #define CONTENTS_TESTFOGVOLUME 0x100 #define CONTENTS_UNUSED 0x200 // unused // NOTE: If it's visible, grab from the top + update LAST_VISIBLE_CONTENTS // if not visible, then grab from the bottom. // CONTENTS_OPAQUE + SURF_NODRAW count as CONTENTS_OPAQUE (shadow-casting // toolsblocklight textures) #define CONTENTS_BLOCKLIGHT 0x400 #define CONTENTS_TEAM1 \ 0x800 // per team contents used to differentiate collisions #define CONTENTS_TEAM2 0x1000 // between players and objects on different teams // ignore CONTENTS_OPAQUE on surfaces that have SURF_NODRAW #define CONTENTS_IGNORE_NODRAW_OPAQUE 0x2000 // hits entities which are MOVETYPE_PUSH (doors, plats, etc.) #define CONTENTS_MOVEABLE 0x4000 // remaining contents are non-visible, and don't eat brushes #define CONTENTS_AREAPORTAL 0x8000 #define CONTENTS_PLAYERCLIP 0x10000 #define CONTENTS_MONSTERCLIP 0x20000 // currents can be added to any other contents, and may be mixed #define CONTENTS_CURRENT_0 0x40000 #define CONTENTS_CURRENT_90 0x80000 #define CONTENTS_CURRENT_180 0x100000 #define CONTENTS_CURRENT_270 0x200000 #define CONTENTS_CURRENT_UP 0x400000 #define CONTENTS_CURRENT_DOWN 0x800000 #define CONTENTS_ORIGIN 0x1000000 // removed before bsping an entity #define CONTENTS_MONSTER 0x2000000 // should never be on a brush, only in game #define CONTENTS_DEBRIS 0x4000000 #define CONTENTS_DETAIL 0x8000000 // brushes to be added after vis leafs #define CONTENTS_TRANSLUCENT 0x10000000 // auto set if any surface has trans #define CONTENTS_LADDER 0x20000000 #define CONTENTS_HITBOX 0x40000000 // use accurate hitboxes on trace #define MASK_SHOT \ (CONTENTS_SOLID | CONTENTS_MOVEABLE | CONTENTS_MONSTER | CONTENTS_WINDOW | \ CONTENTS_DEBRIS | CONTENTS_HITBOX) // These are given to FindMaterial to reference the texture groups that show up // on the #define TEXTURE_GROUP_LIGHTMAP "Lightmaps" #define TEXTURE_GROUP_WORLD "World textures" #define TEXTURE_GROUP_MODEL "Model textures" #define TEXTURE_GROUP_VGUI "VGUI textures" #define TEXTURE_GROUP_PARTICLE "Particle textures" #define TEXTURE_GROUP_DECAL "Decal textures" #define TEXTURE_GROUP_SKYBOX "SkyBox textures" #define TEXTURE_GROUP_CLIENT_EFFECTS "ClientEffect textures" #define TEXTURE_GROUP_OTHER "Other textures" #define TEXTURE_GROUP_PRECACHED \ "Precached" // TODO: assign texture groups to the precached materials #define TEXTURE_GROUP_CUBE_MAP "CubeMap textures" #define TEXTURE_GROUP_RENDER_TARGET "RenderTargets" #define TEXTURE_GROUP_UNACCOUNTED \ "Unaccounted textures" // Textures that weren't assigned a texture group. //#define TEXTURE_GROUP_STATIC_VERTEX_BUFFER "Static Vertex" #define TEXTURE_GROUP_STATIC_INDEX_BUFFER "Static Indices" #define TEXTURE_GROUP_STATIC_VERTEX_BUFFER_DISP "Displacement Verts" #define TEXTURE_GROUP_STATIC_VERTEX_BUFFER_COLOR "Lighting Verts" #define TEXTURE_GROUP_STATIC_VERTEX_BUFFER_WORLD "World Verts" #define TEXTURE_GROUP_STATIC_VERTEX_BUFFER_MODELS "Model Verts" #define TEXTURE_GROUP_STATIC_VERTEX_BUFFER_OTHER "Other Verts" #define TEXTURE_GROUP_DYNAMIC_INDEX_BUFFER "Dynamic Indices" #define TEXTURE_GROUP_DYNAMIC_VERTEX_BUFFER "Dynamic Verts" #define TEXTURE_GROUP_DEPTH_BUFFER "DepthBuffer" #define TEXTURE_GROUP_VIEW_MODEL "ViewModel" #define TEXTURE_GROUP_PIXEL_SHADERS "Pixel Shaders" #define TEXTURE_GROUP_VERTEX_SHADERS "Vertex Shaders" #define TEXTURE_GROUP_RENDER_TARGET_SURFACE "RenderTarget Surfaces" #define TEXTURE_GROUP_MORPH_TARGETS "Morph Targets" #define MAXSTUDIOBONES 128 #define BONE_USED_BY_HITBOX 0x100 #define MASK_SHOT \ (CONTENTS_SOLID | CONTENTS_MOVEABLE | CONTENTS_MONSTER | CONTENTS_WINDOW | \ CONTENTS_DEBRIS | CONTENTS_HITBOX) // NOTE: These are stored in a short in the engine now. Don't use more than 16 // bits #define SURF_LIGHT 0x0001 // value will hold the light strength #define SURF_SKY2D \ 0x0002 // don't draw, indicates we should skylight + draw 2d sky but not // draw the 3D skybox #define SURF_SKY 0x0004 // don't draw, but add to skybox #define SURF_WARP 0x0008 // turbulent water warp #define SURF_TRANS 0x0010 #define SURF_NOPORTAL 0x0020 // the surface can not have a portal placed on it #define SURF_TRIGGER \ 0x0040 // FIXME: This is an xbox hack to work around elimination of trigger // surfaces, which breaks occluders #define SURF_NODRAW 0x0080 // don't bother referencing the texture #define SURF_HINT 0x0100 // make a primary bsp splitter #define SURF_SKIP 0x0200 // completely ignore, allowing non-closed brushes #define SURF_NOLIGHT 0x0400 // Don't calculate light #define SURF_BUMPLIGHT \ 0x0800 // calculate three lightmaps for the surface for bumpmapping #define SURF_NOSHADOWS 0x1000 // Don't receive shadows #define SURF_NODECALS 0x2000 // Don't receive decals #define SURF_NOPAINT \ SURF_NODECALS // the surface can not have paint placed on it #define SURF_NOCHOP 0x4000 // Don't subdivide patches on this surface #define SURF_HITBOX 0x8000 // surface is part of a hitbox #define MASK_ALL (0xFFFFFFFF) // everything that is normally solid #define MASK_SOLID \ (CONTENTS_SOLID | CONTENTS_MOVEABLE | CONTENTS_WINDOW | CONTENTS_MONSTER | \ CONTENTS_GRATE) // everything that blocks player movement #define MASK_PLAYERSOLID \ (CONTENTS_SOLID | CONTENTS_MOVEABLE | CONTENTS_PLAYERCLIP | \ CONTENTS_WINDOW | CONTENTS_MONSTER | CONTENTS_GRATE) // blocks npc movement #define MASK_NPCSOLID \ (CONTENTS_SOLID | CONTENTS_MOVEABLE | CONTENTS_MONSTERCLIP | \ CONTENTS_WINDOW | CONTENTS_MONSTER | CONTENTS_GRATE) // blocks fluid movement #define MASK_NPCFLUID \ (CONTENTS_SOLID | CONTENTS_MOVEABLE | CONTENTS_MONSTERCLIP | \ CONTENTS_WINDOW | CONTENTS_MONSTER) // water physics in these contents #define MASK_WATER (CONTENTS_WATER | CONTENTS_MOVEABLE | CONTENTS_SLIME) // everything that blocks lighting #define MASK_OPAQUE (CONTENTS_SOLID | CONTENTS_MOVEABLE | CONTENTS_OPAQUE) // everything that blocks lighting, but with monsters added. #define MASK_OPAQUE_AND_NPCS (MASK_OPAQUE | CONTENTS_MONSTER) // everything that blocks line of sight for AI #define MASK_BLOCKLOS (CONTENTS_SOLID | CONTENTS_MOVEABLE | CONTENTS_BLOCKLOS) // everything that blocks line of sight for AI plus NPCs #define MASK_BLOCKLOS_AND_NPCS (MASK_BLOCKLOS | CONTENTS_MONSTER) // everything that blocks line of sight for players #define MASK_VISIBLE (MASK_OPAQUE | CONTENTS_IGNORE_NODRAW_OPAQUE) // everything that blocks line of sight for players, but with monsters added. #define MASK_VISIBLE_AND_NPCS \ (MASK_OPAQUE_AND_NPCS | CONTENTS_IGNORE_NODRAW_OPAQUE) // bullets see these as solid #define MASK_SHOT \ (CONTENTS_SOLID | CONTENTS_MOVEABLE | CONTENTS_MONSTER | CONTENTS_WINDOW | \ CONTENTS_DEBRIS | CONTENTS_HITBOX) // bullets see these as solid, except monsters (world+brush only) #define MASK_SHOT_BRUSHONLY \ (CONTENTS_SOLID | CONTENTS_MOVEABLE | CONTENTS_WINDOW | CONTENTS_DEBRIS) // non-raycasted weapons see this as solid (includes grates) #define MASK_SHOT_HULL \ (CONTENTS_SOLID | CONTENTS_MOVEABLE | CONTENTS_MONSTER | CONTENTS_WINDOW | \ CONTENTS_DEBRIS | CONTENTS_GRATE) // hits solids (not grates) and passes through everything else #define MASK_SHOT_PORTAL \ (CONTENTS_SOLID | CONTENTS_MOVEABLE | CONTENTS_WINDOW | CONTENTS_MONSTER) // everything normally solid, except monsters (world+brush only) #define MASK_SOLID_BRUSHONLY \ (CONTENTS_SOLID | CONTENTS_MOVEABLE | CONTENTS_WINDOW | CONTENTS_GRATE) // everything normally solid for player movement, except monsters (world+brush // only) #define MASK_PLAYERSOLID_BRUSHONLY \ (CONTENTS_SOLID | CONTENTS_MOVEABLE | CONTENTS_WINDOW | \ CONTENTS_PLAYERCLIP | CONTENTS_GRATE) // everything normally solid for npc movement, except monsters (world+brush // only) #define MASK_NPCSOLID_BRUSHONLY \ (CONTENTS_SOLID | CONTENTS_MOVEABLE | CONTENTS_WINDOW | \ CONTENTS_MONSTERCLIP | CONTENTS_GRATE) // just the world, used for route rebuilding #define MASK_NPCWORLDSTATIC \ (CONTENTS_SOLID | CONTENTS_WINDOW | CONTENTS_MONSTERCLIP | CONTENTS_GRATE) // just the world, used for route rebuilding #define MASK_NPCWORLDSTATIC_FLUID \ (CONTENTS_SOLID | CONTENTS_WINDOW | CONTENTS_MONSTERCLIP) // These are things that can split areaportals #define MASK_SPLITAREAPORTAL (CONTENTS_WATER | CONTENTS_SLIME) // UNDONE: This is untested, any moving water #define MASK_CURRENT \ (CONTENTS_CURRENT_0 | CONTENTS_CURRENT_90 | CONTENTS_CURRENT_180 | \ CONTENTS_CURRENT_270 | CONTENTS_CURRENT_UP | CONTENTS_CURRENT_DOWN) // everything that blocks corpse movement // UNDONE: Not used yet / may be deleted #define MASK_DEADSOLID \ (CONTENTS_SOLID | CONTENTS_PLAYERCLIP | CONTENTS_WINDOW | CONTENTS_GRATE) #define SEQUENCE_DEFAULT_DRAW 0 #define SEQUENCE_DEFAULT_IDLE1 1 #define SEQUENCE_DEFAULT_IDLE2 2 #define SEQUENCE_DEFAULT_LIGHT_MISS1 3 #define SEQUENCE_DEFAULT_LIGHT_MISS2 4 #define SEQUENCE_DEFAULT_HEAVY_MISS1 9 #define SEQUENCE_DEFAULT_HEAVY_HIT1 10 #define SEQUENCE_DEFAULT_HEAVY_BACKSTAB 11 #define SEQUENCE_DEFAULT_LOOKAT01 12 #define SEQUENCE_BUTTERFLY_DRAW 0 #define SEQUENCE_BUTTERFLY_DRAW2 1 #define SEQUENCE_BUTTERFLY_LOOKAT01 13 #define SEQUENCE_BUTTERFLY_LOOKAT03 15 #define SEQUENCE_FALCHION_IDLE1 1 #define SEQUENCE_FALCHION_HEAVY_MISS1 8 #define SEQUENCE_FALCHION_HEAVY_MISS1_NOFLIP 9 #define SEQUENCE_FALCHION_LOOKAT01 12 #define SEQUENCE_FALCHION_LOOKAT02 13 #define SEQUENCE_DAGGERS_IDLE1 1 #define SEQUENCE_DAGGERS_LIGHT_MISS1 2 #define SEQUENCE_DAGGERS_LIGHT_MISS5 6 #define SEQUENCE_DAGGERS_HEAVY_MISS2 11 #define SEQUENCE_DAGGERS_HEAVY_MISS1 12 #define SEQUENCE_BOWIE_IDLE1 1