07.11.2023

This commit is contained in:
Konstantin 'cpz' L. 2024-11-07 22:43:48 +03:00
parent 125d020806
commit cef5650f51
260 changed files with 1235 additions and 1165 deletions

View File

@ -27,7 +27,7 @@ namespace source2sdk::client
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: false
// Size: 0x18e8
// Size: 0x18f0
// Has VTable
// Construct allowed
// MClassHasEntityLimitedDataDesc
@ -46,45 +46,45 @@ namespace source2sdk::client
class CDOTA_BaseNPC_AghsFort_Watch_Tower : public client::C_DOTA_BaseNPC_Building
{
public:
int32_t m_nOptionNumber; // 0x1870
float m_flMovePlayersRadius; // 0x1874
client::CDOTA_BaseNPC_AghsFort_Watch_Tower__ExitDirection_t m_nExitDirection; // 0x1878
Vector m_vExitLocation; // 0x187c
int32_t m_nPathSelectedID; // 0x1888
int32_t m_nOptionNumber; // 0x1878
float m_flMovePlayersRadius; // 0x187c
client::CDOTA_BaseNPC_AghsFort_Watch_Tower__ExitDirection_t m_nExitDirection; // 0x1880
Vector m_vExitLocation; // 0x1884
int32_t m_nPathSelectedID; // 0x1890
// metadata: MNetworkEnable
int32_t m_nEncounterType; // 0x188c
int32_t m_nEncounterType; // 0x1894
// metadata: MNetworkEnable
bool m_bIsEliteEncounter; // 0x1890
bool m_bIsEliteEncounter; // 0x1898
// metadata: MNetworkEnable
bool m_bIsAscensionLevelPicker; // 0x1891
[[maybe_unused]] std::uint8_t pad_0x1892[0x6]; // 0x1892
bool m_bIsAscensionLevelPicker; // 0x1899
[[maybe_unused]] std::uint8_t pad_0x189a[0x6]; // 0x189a
// metadata: MNetworkEnable
CUtlSymbolLarge m_strEncounterName; // 0x1898
CUtlSymbolLarge m_strEncounterName; // 0x18a0
// metadata: MNetworkEnable
CUtlSymbolLarge m_strAscensionAbilities; // 0x18a0
CUtlSymbolLarge m_strAscensionAbilities; // 0x18a8
// metadata: MNetworkEnable
// m_hEffigy has a template type with potentially unknown template parameters. You can try uncommenting the field below.
// CHandle<client::C_BaseEntity> m_hEffigy;
char m_hEffigy[0x4]; // 0x18a8
float m_flYaw; // 0x18ac
float m_flStartTime; // 0x18b0
entity2::GameTime_t m_flCursorEnterTime; // 0x18b4
bool m_bShowingTooltip; // 0x18b8
[[maybe_unused]] std::uint8_t pad_0x18b9[0x1b]; // 0x18b9
float m_flLastUpdateTime; // 0x18d4
client::ParticleIndex_t m_nChannellingParticle; // 0x18d8
char m_hEffigy[0x4]; // 0x18b0
float m_flYaw; // 0x18b4
float m_flStartTime; // 0x18b8
entity2::GameTime_t m_flCursorEnterTime; // 0x18bc
bool m_bShowingTooltip; // 0x18c0
[[maybe_unused]] std::uint8_t pad_0x18c1[0x1b]; // 0x18c1
float m_flLastUpdateTime; // 0x18dc
client::ParticleIndex_t m_nChannellingParticle; // 0x18e0
// metadata: MNetworkEnable
// m_hRoomGate has a template type with potentially unknown template parameters. You can try uncommenting the field below.
// CHandle<client::CBaseAnimatingActivity> m_hRoomGate;
char m_hRoomGate[0x4]; // 0x18dc
char m_hRoomGate[0x4]; // 0x18e4
// metadata: MNetworkEnable
bool m_bIsBeingChanneled; // 0x18e0
[[maybe_unused]] std::uint8_t pad_0x18e1[0x3]; // 0x18e1
bool m_bIsBeingChanneled; // 0x18e8
[[maybe_unused]] std::uint8_t pad_0x18e9[0x3]; // 0x18e9
// metadata: MNetworkEnable
float m_flGoalCaptureProgress; // 0x18e4
float m_flGoalCaptureProgress; // 0x18ec
};
#pragma pack(pop)
// Cannot assert offsets of fields in CDOTA_BaseNPC_AghsFort_Watch_Tower because it is not a standard-layout class
static_assert(sizeof(CDOTA_BaseNPC_AghsFort_Watch_Tower) == 0x18e8);
static_assert(sizeof(CDOTA_BaseNPC_AghsFort_Watch_Tower) == 0x18f0);
};

View File

@ -19,7 +19,7 @@ namespace source2sdk::client
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: false
// Size: 0x1878
// Size: 0x1880
// Has VTable
// Construct allowed
// MClassHasEntityLimitedDataDesc
@ -28,13 +28,13 @@ namespace source2sdk::client
class CDOTA_BaseNPC_CustomEffigy : public client::C_DOTA_BaseNPC_Building
{
public:
uint32_t m_unStatusEffectIndex; // 0x1870
uint32_t m_unStatusEffectIndex; // 0x1878
// m_hPedestal has a template type with potentially unknown template parameters. You can try uncommenting the field below.
// CHandle<client::C_BaseEntity> m_hPedestal;
char m_hPedestal[0x4]; // 0x1874
char m_hPedestal[0x4]; // 0x187c
};
#pragma pack(pop)
// Cannot assert offsets of fields in CDOTA_BaseNPC_CustomEffigy because it is not a standard-layout class
static_assert(sizeof(CDOTA_BaseNPC_CustomEffigy) == 0x1878);
static_assert(sizeof(CDOTA_BaseNPC_CustomEffigy) == 0x1880);
};

View File

@ -14,7 +14,7 @@ namespace source2sdk::client
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: false
// Size: 0x1878
// Size: 0x1880
// Has VTable
// Construct allowed
// MClassHasEntityLimitedDataDesc
@ -23,11 +23,11 @@ namespace source2sdk::client
class CDOTA_BaseNPC_Effigy_AghsFort : public client::C_DOTA_BaseNPC_Building
{
public:
uint32_t m_unStatusEffectIndex; // 0x1870
[[maybe_unused]] std::uint8_t pad_0x1874[0x4];
uint32_t m_unStatusEffectIndex; // 0x1878
[[maybe_unused]] std::uint8_t pad_0x187c[0x4];
};
#pragma pack(pop)
// Cannot assert offsets of fields in CDOTA_BaseNPC_Effigy_AghsFort because it is not a standard-layout class
static_assert(sizeof(CDOTA_BaseNPC_Effigy_AghsFort) == 0x1878);
static_assert(sizeof(CDOTA_BaseNPC_Effigy_AghsFort) == 0x1880);
};

View File

@ -14,7 +14,7 @@ namespace source2sdk::client
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: false
// Size: 0x1800
// Size: 0x1808
// Has VTable
// Construct allowed
// MClassHasEntityLimitedDataDesc
@ -27,5 +27,5 @@ namespace source2sdk::client
};
#pragma pack(pop)
static_assert(sizeof(CDOTA_BaseNPC_JungleVarmint) == 0x1800);
static_assert(sizeof(CDOTA_BaseNPC_JungleVarmint) == 0x1808);
};

View File

@ -15,7 +15,7 @@ namespace source2sdk::client
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: false
// Size: 0x1808
// Size: 0x1810
// Has VTable
// Construct allowed
// MClassHasEntityLimitedDataDesc
@ -24,8 +24,8 @@ namespace source2sdk::client
class CDOTA_BaseNPC_Phantom_Assassin_GroundDagger : public client::C_DOTA_BaseNPC_Additive
{
public:
client::ParticleIndex_t m_nFXIndex; // 0x1800
[[maybe_unused]] std::uint8_t pad_0x1804[0x4];
client::ParticleIndex_t m_nFXIndex; // 0x1808
[[maybe_unused]] std::uint8_t pad_0x180c[0x4];
// Static fields:
static char* &Get_PARTICLE_SPAWN() {return *reinterpret_cast<char**>(interfaces::g_schema->FindTypeScopeForModule("client.dll")->FindDeclaredClass("CDOTA_BaseNPC_Phantom_Assassin_GroundDagger")->GetStaticFields()[0]->m_pInstance);};
@ -33,5 +33,5 @@ namespace source2sdk::client
#pragma pack(pop)
// Cannot assert offsets of fields in CDOTA_BaseNPC_Phantom_Assassin_GroundDagger because it is not a standard-layout class
static_assert(sizeof(CDOTA_BaseNPC_Phantom_Assassin_GroundDagger) == 0x1808);
static_assert(sizeof(CDOTA_BaseNPC_Phantom_Assassin_GroundDagger) == 0x1810);
};

View File

@ -14,7 +14,7 @@ namespace source2sdk::client
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: false
// Size: 0x1800
// Size: 0x1808
// Has VTable
// Construct allowed
// MClassHasEntityLimitedDataDesc
@ -27,5 +27,5 @@ namespace source2sdk::client
};
#pragma pack(pop)
static_assert(sizeof(CDOTA_BaseNPC_Seasonal_CNY_Balloon) == 0x1800);
static_assert(sizeof(CDOTA_BaseNPC_Seasonal_CNY_Balloon) == 0x1808);
};

View File

@ -14,7 +14,7 @@ namespace source2sdk::client
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: false
// Size: 0x1800
// Size: 0x1808
// Has VTable
// Construct allowed
// MClassHasEntityLimitedDataDesc
@ -27,5 +27,5 @@ namespace source2sdk::client
};
#pragma pack(pop)
static_assert(sizeof(CDOTA_BaseNPC_Seasonal_Dragon) == 0x1800);
static_assert(sizeof(CDOTA_BaseNPC_Seasonal_Dragon) == 0x1808);
};

View File

@ -14,7 +14,7 @@ namespace source2sdk::client
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: false
// Size: 0x1800
// Size: 0x1808
// Has VTable
// Construct allowed
// MClassHasEntityLimitedDataDesc
@ -27,5 +27,5 @@ namespace source2sdk::client
};
#pragma pack(pop)
static_assert(sizeof(CDOTA_BaseNPC_Seasonal_Penguin) == 0x1800);
static_assert(sizeof(CDOTA_BaseNPC_Seasonal_Penguin) == 0x1808);
};

View File

@ -14,7 +14,7 @@ namespace source2sdk::client
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: false
// Size: 0x1800
// Size: 0x1808
// Has VTable
// Construct allowed
// MClassHasEntityLimitedDataDesc
@ -27,5 +27,5 @@ namespace source2sdk::client
};
#pragma pack(pop)
static_assert(sizeof(CDOTA_BaseNPC_Seasonal_TI11_Balloon) == 0x1800);
static_assert(sizeof(CDOTA_BaseNPC_Seasonal_TI11_Balloon) == 0x1808);
};

View File

@ -14,7 +14,7 @@ namespace source2sdk::client
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: false
// Size: 0x1800
// Size: 0x1808
// Has VTable
// Construct allowed
// MClassHasEntityLimitedDataDesc
@ -27,5 +27,5 @@ namespace source2sdk::client
};
#pragma pack(pop)
static_assert(sizeof(CDOTA_BaseNPC_Seasonal_TI11_Balloon_Dire) == 0x1800);
static_assert(sizeof(CDOTA_BaseNPC_Seasonal_TI11_Balloon_Dire) == 0x1808);
};

View File

@ -14,7 +14,7 @@ namespace source2sdk::client
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: false
// Size: 0x1800
// Size: 0x1808
// Has VTable
// Construct allowed
// MClassHasEntityLimitedDataDesc
@ -27,5 +27,5 @@ namespace source2sdk::client
};
#pragma pack(pop)
static_assert(sizeof(CDOTA_BaseNPC_Seasonal_TI9_Balloon) == 0x1800);
static_assert(sizeof(CDOTA_BaseNPC_Seasonal_TI9_Balloon) == 0x1808);
};

View File

@ -14,7 +14,7 @@ namespace source2sdk::client
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: false
// Size: 0x1800
// Size: 0x1808
// Has VTable
// Construct allowed
// MClassHasEntityLimitedDataDesc
@ -27,5 +27,5 @@ namespace source2sdk::client
};
#pragma pack(pop)
static_assert(sizeof(CDOTA_BaseNPC_Seasonal_TI9_Drums) == 0x1800);
static_assert(sizeof(CDOTA_BaseNPC_Seasonal_TI9_Drums) == 0x1808);
};

View File

@ -14,7 +14,7 @@ namespace source2sdk::client
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: false
// Size: 0x1800
// Size: 0x1808
// Has VTable
// Construct allowed
// MClassHasEntityLimitedDataDesc
@ -27,5 +27,5 @@ namespace source2sdk::client
};
#pragma pack(pop)
static_assert(sizeof(CDOTA_BaseNPC_Seasonal_TI9_Monkey) == 0x1800);
static_assert(sizeof(CDOTA_BaseNPC_Seasonal_TI9_Monkey) == 0x1808);
};

View File

@ -24,11 +24,11 @@ namespace source2sdk::client
int32_t bonus_strength; // 0x16e8
int32_t bonus_agility; // 0x16ec
int32_t bonus_intellect; // 0x16f0
int32_t clock_time; // 0x16f4
float bonus_health_regen; // 0x16f8
int32_t bonus_damage; // 0x16fc
int32_t bonus_slow_resistance; // 0x1700
int32_t bonus_health; // 0x1704
float bonus_health_regen; // 0x16f4
int32_t bonus_damage; // 0x16f8
int32_t bonus_slow_resistance; // 0x16fc
int32_t bonus_health; // 0x1700
[[maybe_unused]] std::uint8_t pad_0x1704[0x4];
};
#pragma pack(pop)

View File

@ -15,7 +15,7 @@ namespace source2sdk::client
// Registered alignment: unknown
// Alignment: unknown
// Standard-layout class: false
// Size: 0x16f0
// Size: 0x16f8
// Has VTable
// MNetworkAssumeNotNetworkable
#pragma pack(push, 1)
@ -23,10 +23,12 @@ namespace source2sdk::client
{
public:
int32_t movement_speed_buff_rate; // 0x16e8
client::ParticleIndex_t m_nFXIndex; // 0x16ec
float slow_resist; // 0x16ec
client::ParticleIndex_t m_nFXIndex; // 0x16f0
[[maybe_unused]] std::uint8_t pad_0x16f4[0x4];
};
#pragma pack(pop)
// Cannot assert offsets of fields in CDOTA_Modifier_Item_Disperser_Movespeed_Buff because it is not a standard-layout class
static_assert(sizeof(CDOTA_Modifier_Item_Disperser_Movespeed_Buff) == 0x16f0);
static_assert(sizeof(CDOTA_Modifier_Item_Disperser_Movespeed_Buff) == 0x16f8);
};

View File

@ -26,7 +26,7 @@ namespace source2sdk::client
int32_t bonus_intellect; // 0x16f0
float bonus_mana_regen; // 0x16f4
int32_t bonus_max_mana_percentage; // 0x16f8
int32_t clock_time; // 0x16fc
[[maybe_unused]] std::uint8_t pad_0x16fc[0x4];
};
#pragma pack(pop)

View File

@ -25,8 +25,8 @@ namespace source2sdk::client
int32_t bonus_agility; // 0x16ec
int32_t bonus_intellect; // 0x16f0
int32_t bonus_attack_speed; // 0x16f4
int32_t clock_time; // 0x16f8
float bonus_armor; // 0x16fc
float bonus_armor; // 0x16f8
[[maybe_unused]] std::uint8_t pad_0x16fc[0x4];
};
#pragma pack(pop)

View File

@ -15,7 +15,7 @@ namespace source2sdk::client
// Registered alignment: unknown
// Alignment: unknown
// Standard-layout class: false
// Size: 0x1710
// Size: 0x1708
// Has VTable
// MNetworkAssumeNotNetworkable
#pragma pack(push, 1)
@ -30,11 +30,9 @@ namespace source2sdk::client
int32_t evasion; // 0x16fc
int32_t m_iTotalAmount; // 0x1700
int32_t ally_pct; // 0x1704
int32_t day_vision_multiplier; // 0x1708
[[maybe_unused]] std::uint8_t pad_0x170c[0x4];
};
#pragma pack(pop)
// Cannot assert offsets of fields in CDOTA_Modifier_Mirana_SolarFlare because it is not a standard-layout class
static_assert(sizeof(CDOTA_Modifier_Mirana_SolarFlare) == 0x1710);
static_assert(sizeof(CDOTA_Modifier_Mirana_SolarFlare) == 0x1708);
};

View File

@ -0,0 +1,29 @@
#pragma once
#include "source2sdk/client/CDOTA_Buff.hpp"
#include "source2sdk/source2gen.hpp"
#include <cstddef>
#include <cstdint>
// /////////////////////////////////////////////////////////////
// Module: client
// Created using source2gen - github.com/neverlosecc/source2gen
// /////////////////////////////////////////////////////////////
namespace source2sdk::client
{
// Registered alignment: unknown
// Alignment: unknown
// Standard-layout class: false
// Size: 0x16e8
// Has VTable
// MNetworkAssumeNotNetworkable
#pragma pack(push, 1)
class CDOTA_Modifier_Mirana_Starfall_Protection : public client::CDOTA_Buff
{
public:
// No schema binary for binding
};
#pragma pack(pop)
static_assert(sizeof(CDOTA_Modifier_Mirana_Starfall_Protection) == 0x16e8);
};

View File

@ -9,30 +9,33 @@
// Created using source2gen - github.com/neverlosecc/source2gen
// /////////////////////////////////////////////////////////////
namespace source2sdk::client
{
class C_DOTA_Ability_Lone_Druid_Bear_Necessities;
};
namespace source2sdk::client
{
// Registered alignment: unknown
// Alignment: unknown
// Standard-layout class: false
// Size: 0x16f0
// Size: 0x1718
// Has VTable
// MNetworkAssumeNotNetworkable
#pragma pack(push, 1)
class CDOTA_Modifier_Spirit_Bear_Necessities : public client::CDOTA_Buff
{
public:
// m_hAbilityBearNecessities has a template type with potentially unknown template parameters. You can try uncommenting the field below.
// CHandle<client::C_DOTA_Ability_Lone_Druid_Bear_Necessities> m_hAbilityBearNecessities;
char m_hAbilityBearNecessities[0x4]; // 0x16e8
int32_t item_slots; // 0x16ec
float bonus_int; // 0x16e8
float bonus_str; // 0x16ec
float bonus_agi; // 0x16f0
int32_t bonus_attack_speed; // 0x16f4
int32_t bonus_attack_damage; // 0x16f8
float bonus_health_regen; // 0x16fc
float bonus_health_regen_percent; // 0x1700
float bonus_mana_regen; // 0x1704
int32_t bonus_health; // 0x1708
int32_t bonus_mana; // 0x170c
float bonus_evasion; // 0x1710
int32_t item_slots; // 0x1714
};
#pragma pack(pop)
// Cannot assert offsets of fields in CDOTA_Modifier_Spirit_Bear_Necessities because it is not a standard-layout class
static_assert(sizeof(CDOTA_Modifier_Spirit_Bear_Necessities) == 0x16f0);
static_assert(sizeof(CDOTA_Modifier_Spirit_Bear_Necessities) == 0x1718);
};

View File

@ -23,8 +23,8 @@ namespace source2sdk::client
public:
float attack_slow; // 0x16e8
float movement_slow_max; // 0x16ec
float debuff_radius; // 0x16f0
[[maybe_unused]] std::uint8_t pad_0x16f4[0x4];
float movement_slow_min; // 0x16f0
float debuff_radius; // 0x16f4
};
#pragma pack(pop)

View File

@ -14,16 +14,18 @@ namespace source2sdk::client
// Registered alignment: unknown
// Alignment: unknown
// Standard-layout class: false
// Size: 0x16f8
// Size: 0x1700
// Has VTable
// MNetworkAssumeNotNetworkable
#pragma pack(push, 1)
class CDOTA_Modifier_Windrunner_Windrun_Invis : public client::CDOTA_Modifier_Invisible
{
public:
// No schema binary for binding
bool m_bDispellable; // 0x16f8
[[maybe_unused]] std::uint8_t pad_0x16f9[0x7];
};
#pragma pack(pop)
static_assert(sizeof(CDOTA_Modifier_Windrunner_Windrun_Invis) == 0x16f8);
// Cannot assert offsets of fields in CDOTA_Modifier_Windrunner_Windrun_Invis because it is not a standard-layout class
static_assert(sizeof(CDOTA_Modifier_Windrunner_Windrun_Invis) == 0x1700);
};

View File

@ -14,7 +14,7 @@ namespace source2sdk::client
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: false
// Size: 0x1800
// Size: 0x1808
// Has VTable
// Construct allowed
// MClassHasEntityLimitedDataDesc
@ -27,5 +27,5 @@ namespace source2sdk::client
};
#pragma pack(pop)
static_assert(sizeof(CDOTA_Muerta_Revenant) == 0x1800);
static_assert(sizeof(CDOTA_Muerta_Revenant) == 0x1808);
};

View File

@ -19,7 +19,7 @@ namespace source2sdk::client
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: false
// Size: 0x1818
// Size: 0x1820
// Has VTable
// Construct allowed
// MNetworkAssumeNotNetworkable
@ -27,14 +27,14 @@ namespace source2sdk::client
class CDOTA_NPC_Observer_Ward : public client::C_DOTA_BaseNPC_Additive
{
public:
int32_t m_iDuration; // 0x1800
[[maybe_unused]] std::uint8_t pad_0x1804[0x4]; // 0x1804
particleslib::CNewParticleEffect* m_pVisionRangeFX; // 0x1808
int32_t m_nPreviewViewer; // 0x1810
[[maybe_unused]] std::uint8_t pad_0x1814[0x4];
int32_t m_iDuration; // 0x1808
[[maybe_unused]] std::uint8_t pad_0x180c[0x4]; // 0x180c
particleslib::CNewParticleEffect* m_pVisionRangeFX; // 0x1810
int32_t m_nPreviewViewer; // 0x1818
[[maybe_unused]] std::uint8_t pad_0x181c[0x4];
};
#pragma pack(pop)
// Cannot assert offsets of fields in CDOTA_NPC_Observer_Ward because it is not a standard-layout class
static_assert(sizeof(CDOTA_NPC_Observer_Ward) == 0x1818);
static_assert(sizeof(CDOTA_NPC_Observer_Ward) == 0x1820);
};

View File

@ -14,7 +14,7 @@ namespace source2sdk::client
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: false
// Size: 0x1820
// Size: 0x1828
// Has VTable
// Construct allowed
// MNetworkAssumeNotNetworkable
@ -22,11 +22,11 @@ namespace source2sdk::client
class CDOTA_NPC_Observer_Ward_TrueSight : public client::CDOTA_NPC_Observer_Ward
{
public:
float m_flTrueSight; // 0x1818
CEntityHandle m_hAbilityEntity; // 0x181c
float m_flTrueSight; // 0x1820
CEntityHandle m_hAbilityEntity; // 0x1824
};
#pragma pack(pop)
// Cannot assert offsets of fields in CDOTA_NPC_Observer_Ward_TrueSight because it is not a standard-layout class
static_assert(sizeof(CDOTA_NPC_Observer_Ward_TrueSight) == 0x1820);
static_assert(sizeof(CDOTA_NPC_Observer_Ward_TrueSight) == 0x1828);
};

View File

@ -14,7 +14,7 @@ namespace source2sdk::client
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: false
// Size: 0x1810
// Size: 0x1818
// Has VTable
// Construct allowed
// MClassHasEntityLimitedDataDesc
@ -27,5 +27,5 @@ namespace source2sdk::client
};
#pragma pack(pop)
static_assert(sizeof(CDOTA_Unit_AghsFort_Creature_DragonKnight) == 0x1810);
static_assert(sizeof(CDOTA_Unit_AghsFort_Creature_DragonKnight) == 0x1818);
};

View File

@ -14,7 +14,7 @@ namespace source2sdk::client
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: false
// Size: 0x1800
// Size: 0x1808
// Has VTable
// Construct allowed
// MClassHasEntityLimitedDataDesc
@ -27,5 +27,5 @@ namespace source2sdk::client
};
#pragma pack(pop)
static_assert(sizeof(CDOTA_Unit_AghsFort_SpectralTusk_Tombstone) == 0x1800);
static_assert(sizeof(CDOTA_Unit_AghsFort_SpectralTusk_Tombstone) == 0x1808);
};

View File

@ -15,7 +15,7 @@ namespace source2sdk::client
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: false
// Size: 0x1830
// Size: 0x1838
// Has VTable
// Construct allowed
// MClassHasEntityLimitedDataDesc
@ -24,11 +24,11 @@ namespace source2sdk::client
class CDOTA_Unit_Announcer : public client::C_DOTA_BaseNPC
{
public:
client::CAnnouncerDescriptor m_currentAnnouncer; // 0x1800
[[maybe_unused]] std::uint8_t pad_0x1828[0x8];
client::CAnnouncerDescriptor m_currentAnnouncer; // 0x1808
[[maybe_unused]] std::uint8_t pad_0x1830[0x8];
};
#pragma pack(pop)
// Cannot assert offsets of fields in CDOTA_Unit_Announcer because it is not a standard-layout class
static_assert(sizeof(CDOTA_Unit_Announcer) == 0x1830);
static_assert(sizeof(CDOTA_Unit_Announcer) == 0x1838);
};

View File

@ -14,7 +14,7 @@ namespace source2sdk::client
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: false
// Size: 0x1830
// Size: 0x1838
// Has VTable
// Construct allowed
// MClassHasEntityLimitedDataDesc
@ -27,5 +27,5 @@ namespace source2sdk::client
};
#pragma pack(pop)
static_assert(sizeof(CDOTA_Unit_Announcer_Killing_Spree) == 0x1830);
static_assert(sizeof(CDOTA_Unit_Announcer_Killing_Spree) == 0x1838);
};

View File

@ -14,7 +14,7 @@ namespace source2sdk::client
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: false
// Size: 0x1800
// Size: 0x1808
// Has VTable
// Construct allowed
// MClassHasEntityLimitedDataDesc
@ -27,5 +27,5 @@ namespace source2sdk::client
};
#pragma pack(pop)
static_assert(sizeof(CDOTA_Unit_CustomGameAnnouncer) == 0x1800);
static_assert(sizeof(CDOTA_Unit_CustomGameAnnouncer) == 0x1808);
};

View File

@ -14,7 +14,7 @@ namespace source2sdk::client
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: false
// Size: 0x1800
// Size: 0x1808
// Has VTable
// Construct allowed
// MClassHasEntityLimitedDataDesc
@ -27,5 +27,5 @@ namespace source2sdk::client
};
#pragma pack(pop)
static_assert(sizeof(CDOTA_Unit_CustomGameAnnouncerAghanim) == 0x1800);
static_assert(sizeof(CDOTA_Unit_CustomGameAnnouncerAghanim) == 0x1808);
};

View File

@ -14,7 +14,7 @@ namespace source2sdk::client
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: false
// Size: 0x1800
// Size: 0x1808
// Has VTable
// Construct allowed
// MClassHasEntityLimitedDataDesc
@ -27,5 +27,5 @@ namespace source2sdk::client
};
#pragma pack(pop)
static_assert(sizeof(CDOTA_Unit_Elder_Titan_AncestralSpirit) == 0x1800);
static_assert(sizeof(CDOTA_Unit_Elder_Titan_AncestralSpirit) == 0x1808);
};

View File

@ -14,7 +14,7 @@ namespace source2sdk::client
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: false
// Size: 0x1800
// Size: 0x1808
// Has VTable
// Construct allowed
// MClassHasEntityLimitedDataDesc
@ -27,5 +27,5 @@ namespace source2sdk::client
};
#pragma pack(pop)
static_assert(sizeof(CDOTA_Unit_Grimstroke_InkCreature) == 0x1800);
static_assert(sizeof(CDOTA_Unit_Grimstroke_InkCreature) == 0x1808);
};

View File

@ -14,7 +14,7 @@ namespace source2sdk::client
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: false
// Size: 0x1b88
// Size: 0x1b90
// Has VTable
// Construct allowed
// MClassHasEntityLimitedDataDesc
@ -27,5 +27,5 @@ namespace source2sdk::client
};
#pragma pack(pop)
static_assert(sizeof(CDOTA_Unit_Hero_Abaddon) == 0x1b88);
static_assert(sizeof(CDOTA_Unit_Hero_Abaddon) == 0x1b90);
};

View File

@ -15,7 +15,7 @@ namespace source2sdk::client
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: false
// Size: 0x1b90
// Size: 0x1b98
// Has VTable
// Construct allowed
// MClassHasEntityLimitedDataDesc
@ -24,11 +24,11 @@ namespace source2sdk::client
class CDOTA_Unit_Hero_AbyssalUnderlord : public client::C_DOTA_BaseNPC_Hero
{
public:
client::ParticleIndex_t m_iRangeFX; // 0x1b88
[[maybe_unused]] std::uint8_t pad_0x1b8c[0x4];
client::ParticleIndex_t m_iRangeFX; // 0x1b90
[[maybe_unused]] std::uint8_t pad_0x1b94[0x4];
};
#pragma pack(pop)
// Cannot assert offsets of fields in CDOTA_Unit_Hero_AbyssalUnderlord because it is not a standard-layout class
static_assert(sizeof(CDOTA_Unit_Hero_AbyssalUnderlord) == 0x1b90);
static_assert(sizeof(CDOTA_Unit_Hero_AbyssalUnderlord) == 0x1b98);
};

View File

@ -14,7 +14,7 @@ namespace source2sdk::client
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: false
// Size: 0x1b88
// Size: 0x1b90
// Has VTable
// Construct allowed
// MClassHasEntityLimitedDataDesc
@ -27,5 +27,5 @@ namespace source2sdk::client
};
#pragma pack(pop)
static_assert(sizeof(CDOTA_Unit_Hero_Alchemist) == 0x1b88);
static_assert(sizeof(CDOTA_Unit_Hero_Alchemist) == 0x1b90);
};

View File

@ -14,7 +14,7 @@ namespace source2sdk::client
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: false
// Size: 0x1b88
// Size: 0x1b90
// Has VTable
// Construct allowed
// MClassHasEntityLimitedDataDesc
@ -27,5 +27,5 @@ namespace source2sdk::client
};
#pragma pack(pop)
static_assert(sizeof(CDOTA_Unit_Hero_AncientApparition) == 0x1b88);
static_assert(sizeof(CDOTA_Unit_Hero_AncientApparition) == 0x1b90);
};

View File

@ -15,7 +15,7 @@ namespace source2sdk::client
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: false
// Size: 0x1b98
// Size: 0x1ba0
// Has VTable
// Construct allowed
// MClassHasEntityLimitedDataDesc
@ -24,10 +24,10 @@ namespace source2sdk::client
class CDOTA_Unit_Hero_ArcWarden : public client::C_DOTA_BaseNPC_Hero
{
public:
client::ParticleIndex_t m_nTalkFXIndex; // 0x1b88
client::ParticleIndex_t m_nFXDeath; // 0x1b8c
client::ParticleIndex_t m_nTempestFX; // 0x1b90
[[maybe_unused]] std::uint8_t pad_0x1b94[0x4];
client::ParticleIndex_t m_nTalkFXIndex; // 0x1b90
client::ParticleIndex_t m_nFXDeath; // 0x1b94
client::ParticleIndex_t m_nTempestFX; // 0x1b98
[[maybe_unused]] std::uint8_t pad_0x1b9c[0x4];
// Static fields:
static CUtlStringToken &Get_s_NormalFacet() {return *reinterpret_cast<CUtlStringToken*>(interfaces::g_schema->FindTypeScopeForModule("client.dll")->FindDeclaredClass("CDOTA_Unit_Hero_ArcWarden")->GetStaticFields()[0]->m_pInstance);};
@ -36,5 +36,5 @@ namespace source2sdk::client
#pragma pack(pop)
// Cannot assert offsets of fields in CDOTA_Unit_Hero_ArcWarden because it is not a standard-layout class
static_assert(sizeof(CDOTA_Unit_Hero_ArcWarden) == 0x1b98);
static_assert(sizeof(CDOTA_Unit_Hero_ArcWarden) == 0x1ba0);
};

View File

@ -14,7 +14,7 @@ namespace source2sdk::client
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: false
// Size: 0x1b88
// Size: 0x1b90
// Has VTable
// Construct allowed
// MClassHasEntityLimitedDataDesc
@ -27,5 +27,5 @@ namespace source2sdk::client
};
#pragma pack(pop)
static_assert(sizeof(CDOTA_Unit_Hero_Centaur) == 0x1b88);
static_assert(sizeof(CDOTA_Unit_Hero_Centaur) == 0x1b90);
};

View File

@ -14,7 +14,7 @@ namespace source2sdk::client
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: false
// Size: 0x1b90
// Size: 0x1b98
// Has VTable
// Construct allowed
// MClassHasEntityLimitedDataDesc
@ -26,11 +26,11 @@ namespace source2sdk::client
{
public:
// metadata: MNetworkEnable
int32_t m_nAttackState; // 0x1b88
[[maybe_unused]] std::uint8_t pad_0x1b8c[0x4];
int32_t m_nAttackState; // 0x1b90
[[maybe_unused]] std::uint8_t pad_0x1b94[0x4];
};
#pragma pack(pop)
// Cannot assert offsets of fields in CDOTA_Unit_Hero_Dawnbreaker because it is not a standard-layout class
static_assert(sizeof(CDOTA_Unit_Hero_Dawnbreaker) == 0x1b90);
static_assert(sizeof(CDOTA_Unit_Hero_Dawnbreaker) == 0x1b98);
};

View File

@ -14,7 +14,7 @@ namespace source2sdk::client
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: false
// Size: 0x1b88
// Size: 0x1b90
// Has VTable
// Construct allowed
// MClassHasEntityLimitedDataDesc
@ -27,5 +27,5 @@ namespace source2sdk::client
};
#pragma pack(pop)
static_assert(sizeof(CDOTA_Unit_Hero_Elder_Titan) == 0x1b88);
static_assert(sizeof(CDOTA_Unit_Hero_Elder_Titan) == 0x1b90);
};

View File

@ -15,7 +15,7 @@ namespace source2sdk::client
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: false
// Size: 0x1b90
// Size: 0x1b98
// Has VTable
// Construct allowed
// MClassHasEntityLimitedDataDesc
@ -24,11 +24,11 @@ namespace source2sdk::client
class CDOTA_Unit_Hero_Grimstroke : public client::C_DOTA_BaseNPC_Hero
{
public:
client::ParticleIndex_t m_nFXDeath; // 0x1b88
[[maybe_unused]] std::uint8_t pad_0x1b8c[0x4];
client::ParticleIndex_t m_nFXDeath; // 0x1b90
[[maybe_unused]] std::uint8_t pad_0x1b94[0x4];
};
#pragma pack(pop)
// Cannot assert offsets of fields in CDOTA_Unit_Hero_Grimstroke because it is not a standard-layout class
static_assert(sizeof(CDOTA_Unit_Hero_Grimstroke) == 0x1b90);
static_assert(sizeof(CDOTA_Unit_Hero_Grimstroke) == 0x1b98);
};

View File

@ -14,7 +14,7 @@ namespace source2sdk::client
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: false
// Size: 0x1b88
// Size: 0x1b90
// Has VTable
// Construct allowed
// MClassHasEntityLimitedDataDesc
@ -27,5 +27,5 @@ namespace source2sdk::client
};
#pragma pack(pop)
static_assert(sizeof(CDOTA_Unit_Hero_Gyrocopter) == 0x1b88);
static_assert(sizeof(CDOTA_Unit_Hero_Gyrocopter) == 0x1b90);
};

View File

@ -14,7 +14,7 @@ namespace source2sdk::client
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: false
// Size: 0x1b88
// Size: 0x1b90
// Has VTable
// Construct allowed
// MClassHasEntityLimitedDataDesc
@ -27,5 +27,5 @@ namespace source2sdk::client
};
#pragma pack(pop)
static_assert(sizeof(CDOTA_Unit_Hero_Marci) == 0x1b88);
static_assert(sizeof(CDOTA_Unit_Hero_Marci) == 0x1b90);
};

View File

@ -14,7 +14,7 @@ namespace source2sdk::client
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: false
// Size: 0x1b88
// Size: 0x1b90
// Has VTable
// Construct allowed
// MClassHasEntityLimitedDataDesc
@ -27,5 +27,5 @@ namespace source2sdk::client
};
#pragma pack(pop)
static_assert(sizeof(CDOTA_Unit_Hero_Mars) == 0x1b88);
static_assert(sizeof(CDOTA_Unit_Hero_Mars) == 0x1b90);
};

View File

@ -14,7 +14,7 @@ namespace source2sdk::client
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: false
// Size: 0x1b88
// Size: 0x1b90
// Has VTable
// Construct allowed
// MClassHasEntityLimitedDataDesc
@ -27,5 +27,5 @@ namespace source2sdk::client
};
#pragma pack(pop)
static_assert(sizeof(CDOTA_Unit_Hero_PrimalBeast) == 0x1b88);
static_assert(sizeof(CDOTA_Unit_Hero_PrimalBeast) == 0x1b90);
};

View File

@ -14,7 +14,7 @@ namespace source2sdk::client
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: false
// Size: 0x1b88
// Size: 0x1b90
// Has VTable
// Construct allowed
// MClassHasEntityLimitedDataDesc
@ -27,5 +27,5 @@ namespace source2sdk::client
};
#pragma pack(pop)
static_assert(sizeof(CDOTA_Unit_Hero_Ringmaster) == 0x1b88);
static_assert(sizeof(CDOTA_Unit_Hero_Ringmaster) == 0x1b90);
};

View File

@ -14,7 +14,7 @@ namespace source2sdk::client
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: false
// Size: 0x1b88
// Size: 0x1b90
// Has VTable
// Construct allowed
// MClassHasEntityLimitedDataDesc
@ -27,5 +27,5 @@ namespace source2sdk::client
};
#pragma pack(pop)
static_assert(sizeof(CDOTA_Unit_Hero_Snapfire) == 0x1b88);
static_assert(sizeof(CDOTA_Unit_Hero_Snapfire) == 0x1b90);
};

View File

@ -14,7 +14,7 @@ namespace source2sdk::client
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: false
// Size: 0x1b88
// Size: 0x1b90
// Has VTable
// Construct allowed
// MClassHasEntityLimitedDataDesc
@ -27,5 +27,5 @@ namespace source2sdk::client
};
#pragma pack(pop)
static_assert(sizeof(CDOTA_Unit_Hero_Void_Spirit) == 0x1b88);
static_assert(sizeof(CDOTA_Unit_Hero_Void_Spirit) == 0x1b90);
};

View File

@ -14,7 +14,7 @@ namespace source2sdk::client
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: false
// Size: 0x1800
// Size: 0x1808
// Has VTable
// Construct allowed
// MClassHasEntityLimitedDataDesc
@ -27,5 +27,5 @@ namespace source2sdk::client
};
#pragma pack(pop)
static_assert(sizeof(CIngameEvent_MuertaReleaseSpring2023_DummyModifierHolder) == 0x1800);
static_assert(sizeof(CIngameEvent_MuertaReleaseSpring2023_DummyModifierHolder) == 0x1808);
};

View File

@ -14,7 +14,7 @@ namespace source2sdk::client
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: false
// Size: 0x1808
// Size: 0x1810
// Has VTable
// Construct allowed
// MClassHasEntityLimitedDataDesc
@ -27,5 +27,5 @@ namespace source2sdk::client
};
#pragma pack(pop)
static_assert(sizeof(CODTA_Unit_Warlock_Imp) == 0x1808);
static_assert(sizeof(CODTA_Unit_Warlock_Imp) == 0x1810);
};

View File

@ -14,53 +14,18 @@ namespace source2sdk::client
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: false
// Size: 0x608
// Size: 0x5d8
// Has VTable
// Construct allowed
// MClassHasEntityLimitedDataDesc
// MNetworkAssumeNotNetworkable
//
// static metadata: MNetworkVarNames "float bonus_int"
// static metadata: MNetworkVarNames "float bonus_str"
// static metadata: MNetworkVarNames "float bonus_agi"
// static metadata: MNetworkVarNames "float bonus_attack_speed"
// static metadata: MNetworkVarNames "float bonus_attack_damage"
// static metadata: MNetworkVarNames "float bonus_health_regen"
// static metadata: MNetworkVarNames "float bonus_health_regen_percent"
// static metadata: MNetworkVarNames "float bonus_mana_regen"
// static metadata: MNetworkVarNames "float bonus_health"
// static metadata: MNetworkVarNames "float bonus_mana"
// static metadata: MNetworkVarNames "float bonus_evasion"
#pragma pack(push, 1)
class C_DOTA_Ability_Lone_Druid_Bear_Necessities : public client::C_DOTABaseAbility
{
public:
// metadata: MNetworkEnable
float bonus_int; // 0x5d8
// metadata: MNetworkEnable
float bonus_str; // 0x5dc
// metadata: MNetworkEnable
float bonus_agi; // 0x5e0
// metadata: MNetworkEnable
float bonus_attack_speed; // 0x5e4
// metadata: MNetworkEnable
float bonus_attack_damage; // 0x5e8
// metadata: MNetworkEnable
float bonus_health_regen; // 0x5ec
// metadata: MNetworkEnable
float bonus_health_regen_percent; // 0x5f0
// metadata: MNetworkEnable
float bonus_mana_regen; // 0x5f4
// metadata: MNetworkEnable
float bonus_health; // 0x5f8
// metadata: MNetworkEnable
float bonus_mana; // 0x5fc
// metadata: MNetworkEnable
float bonus_evasion; // 0x600
[[maybe_unused]] std::uint8_t pad_0x604[0x4];
// No schema binary for binding
};
#pragma pack(pop)
// Cannot assert offsets of fields in C_DOTA_Ability_Lone_Druid_Bear_Necessities because it is not a standard-layout class
static_assert(sizeof(C_DOTA_Ability_Lone_Druid_Bear_Necessities) == 0x608);
static_assert(sizeof(C_DOTA_Ability_Lone_Druid_Bear_Necessities) == 0x5d8);
};

View File

@ -0,0 +1,31 @@
#pragma once
#include "source2sdk/client/C_DOTABaseAbility.hpp"
#include "source2sdk/source2gen.hpp"
#include <cstddef>
#include <cstdint>
// /////////////////////////////////////////////////////////////
// Module: client
// Created using source2gen - github.com/neverlosecc/source2gen
// /////////////////////////////////////////////////////////////
namespace source2sdk::client
{
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: false
// Size: 0x5d8
// Has VTable
// Construct allowed
// MClassHasEntityLimitedDataDesc
// MNetworkAssumeNotNetworkable
#pragma pack(push, 1)
class C_DOTA_Ability_Special_Bonus_HP_Regen_3 : public client::C_DOTABaseAbility
{
public:
// No schema binary for binding
};
#pragma pack(pop)
static_assert(sizeof(C_DOTA_Ability_Special_Bonus_HP_Regen_3) == 0x5d8);
};

View File

@ -45,7 +45,7 @@ namespace source2sdk::client
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: false
// Size: 0x1800
// Size: 0x1808
// Has VTable
// Construct allowed
// MClassHasEntityLimitedDataDesc
@ -120,6 +120,8 @@ namespace source2sdk::client
// static metadata: MNetworkVarNames "int m_iDamageMin"
// static metadata: MNetworkVarNames "int m_iDamageMax"
// static metadata: MNetworkVarNames "int m_iDamageBonus"
// static metadata: MNetworkVarNames "int m_iBaseDamageMin"
// static metadata: MNetworkVarNames "int m_iBaseDamageMax"
// static metadata: MNetworkVarNames "int m_iTaggedAsVisibleByTeam"
// static metadata: MNetworkVarNames "CDOTA_ModifierManager m_ModifierManager"
// static metadata: MNetworkVarNames "CDOTA_UnitInventory m_Inventory"
@ -312,229 +314,233 @@ namespace source2sdk::client
// metadata: MNetworkEnable
int32_t m_iDamageBonus; // 0xc28
// metadata: MNetworkEnable
int32_t m_iBaseDamageMin; // 0xc2c
// metadata: MNetworkEnable
int32_t m_iBaseDamageMax; // 0xc30
// metadata: MNetworkEnable
// metadata: MNetworkPriority "32"
int32_t m_iTaggedAsVisibleByTeam; // 0xc2c
int32_t m_iTaggedAsVisibleByTeam; // 0xc34
// metadata: MNetworkEnable
client::CDOTA_ModifierManager m_ModifierManager; // 0xc30
client::CDOTA_ModifierManager m_ModifierManager; // 0xc38
// metadata: MNetworkEnable
client::C_DOTA_UnitInventory m_Inventory; // 0xf50
[[maybe_unused]] std::uint8_t pad_0x1020[0x8]; // 0x1020
client::C_DOTA_UnitInventory m_Inventory; // 0xf58
[[maybe_unused]] std::uint8_t pad_0x1028[0x8]; // 0x1028
// metadata: MNetworkEnable
// metadata: MNetworkChangeCallback "OnUnitStateChanged"
// metadata: MNetworkPriority "32"
uint64_t m_nUnitState64; // 0x1028
[[maybe_unused]] std::uint8_t pad_0x1030[0x8]; // 0x1030
uint64_t m_nUnitDebuffState; // 0x1038
bool m_bHasInventory; // 0x1040
[[maybe_unused]] std::uint8_t pad_0x1041[0x3]; // 0x1041
int32_t m_iAcquisitionRange; // 0x1044
int32_t m_FoWViewID; // 0x1048
int32_t m_iPrevHealthPct; // 0x104c
int32_t m_iPrevLifeState; // 0x1050
int32_t m_iPrevTeam; // 0x1054
bool m_bPrevProvidesVision; // 0x1058
[[maybe_unused]] std::uint8_t pad_0x1059[0x7]; // 0x1059
uint64_t m_nPrevControllableMask; // 0x1060
[[maybe_unused]] std::uint8_t pad_0x1068[0x8]; // 0x1068
client::CountdownTimer m_TagTime; // 0x1070
client::CountdownTimer m_ClickedTime; // 0x1088
entity2::GameTime_t m_flIdleRunPoseStartTime[2]; // 0x10a0
float m_flIdleRunPoseDuration[2]; // 0x10a8
bool m_bAnimationTransitionActive; // 0x10b0
[[maybe_unused]] std::uint8_t pad_0x10b1[0x3]; // 0x10b1
int32_t m_nAnimationTransitionPoseParameters[2]; // 0x10b4
int32_t m_nAnimationTransitionInjuredPoseParameters[2]; // 0x10bc
int32_t m_nAnimationTransitionAggressivePoseParameters[2]; // 0x10c4
[[maybe_unused]] std::uint8_t pad_0x10cc[0x5c]; // 0x10cc
entity2::GameTime_t m_flTimeSinceLastAbilityNag; // 0x1128
uint64_t m_nUnitState64; // 0x1030
[[maybe_unused]] std::uint8_t pad_0x1038[0x8]; // 0x1038
uint64_t m_nUnitDebuffState; // 0x1040
bool m_bHasInventory; // 0x1048
[[maybe_unused]] std::uint8_t pad_0x1049[0x3]; // 0x1049
int32_t m_iAcquisitionRange; // 0x104c
int32_t m_FoWViewID; // 0x1050
int32_t m_iPrevHealthPct; // 0x1054
int32_t m_iPrevLifeState; // 0x1058
int32_t m_iPrevTeam; // 0x105c
bool m_bPrevProvidesVision; // 0x1060
[[maybe_unused]] std::uint8_t pad_0x1061[0x7]; // 0x1061
uint64_t m_nPrevControllableMask; // 0x1068
[[maybe_unused]] std::uint8_t pad_0x1070[0x8]; // 0x1070
client::CountdownTimer m_TagTime; // 0x1078
client::CountdownTimer m_ClickedTime; // 0x1090
entity2::GameTime_t m_flIdleRunPoseStartTime[2]; // 0x10a8
float m_flIdleRunPoseDuration[2]; // 0x10b0
bool m_bAnimationTransitionActive; // 0x10b8
[[maybe_unused]] std::uint8_t pad_0x10b9[0x3]; // 0x10b9
int32_t m_nAnimationTransitionPoseParameters[2]; // 0x10bc
int32_t m_nAnimationTransitionInjuredPoseParameters[2]; // 0x10c4
int32_t m_nAnimationTransitionAggressivePoseParameters[2]; // 0x10cc
[[maybe_unused]] std::uint8_t pad_0x10d4[0x5c]; // 0x10d4
entity2::GameTime_t m_flTimeSinceLastAbilityNag; // 0x1130
// metadata: MNetworkEnable
// metadata: MNetworkPriority "32"
int32_t m_iAttackCapabilities; // 0x112c
int32_t m_iAttackCapabilities; // 0x1134
// metadata: MNetworkEnable
// metadata: MNetworkPriority "32"
int32_t m_iSpecialAbility; // 0x1130
int32_t m_iMoveCapabilities; // 0x1134
int32_t m_iSpecialAbility; // 0x1138
int32_t m_iMoveCapabilities; // 0x113c
// metadata: MNetworkEnable
client::PlayerID_t m_nPlayerOwnerID; // 0x1138
client::PlayerID_t m_nPlayerOwnerID; // 0x1140
// metadata: MNetworkEnable
entity2::GameTime_t m_flLastDamageTime; // 0x113c
entity2::GameTime_t m_flLastDamageTime; // 0x1144
// metadata: MNetworkEnable
entity2::GameTime_t m_flLastAttackTime; // 0x1140
[[maybe_unused]] std::uint8_t pad_0x1144[0x4]; // 0x1144
CUtlSymbolLarge m_iszMinimapIcon; // 0x1148
[[maybe_unused]] std::uint8_t pad_0x1150[0x8]; // 0x1150
float m_flMinimapIconSize; // 0x1158
bool m_bMinimapDisableTint; // 0x115c
bool m_bMinimapDisableRotation; // 0x115d
Color m_colorHeroGlow; // 0x115e
[[maybe_unused]] std::uint8_t pad_0x1162[0x2]; // 0x1162
int32_t m_iNearShopMask; // 0x1164
int32_t m_nPoseParameterTurn; // 0x1168
int32_t m_nPoseParameterRun; // 0x116c
float m_flLean; // 0x1170
float m_flRun; // 0x1174
entity2::GameTime_t m_flLastAttackTime; // 0x1148
[[maybe_unused]] std::uint8_t pad_0x114c[0x4]; // 0x114c
CUtlSymbolLarge m_iszMinimapIcon; // 0x1150
[[maybe_unused]] std::uint8_t pad_0x1158[0x8]; // 0x1158
float m_flMinimapIconSize; // 0x1160
bool m_bMinimapDisableTint; // 0x1164
bool m_bMinimapDisableRotation; // 0x1165
Color m_colorHeroGlow; // 0x1166
[[maybe_unused]] std::uint8_t pad_0x116a[0x2]; // 0x116a
int32_t m_iNearShopMask; // 0x116c
int32_t m_nPoseParameterTurn; // 0x1170
int32_t m_nPoseParameterRun; // 0x1174
float m_flLean; // 0x1178
float m_flRun; // 0x117c
// metadata: MNetworkEnable
// metadata: MNetworkPriority "32"
int32_t m_anglediff; // 0x1178
bool m_bInfoKeyActive; // 0x117c
bool m_bNewUpdateAssetModifiersNetworked; // 0x117d
[[maybe_unused]] std::uint8_t pad_0x117e[0x2]; // 0x117e
entity2::GameTick_t m_nAssetModifiersLastUpdatedTick; // 0x1180
bool m_bSuppressGlow; // 0x1184
bool m_bWasSinking; // 0x1185
int32_t m_anglediff; // 0x1180
bool m_bInfoKeyActive; // 0x1184
bool m_bNewUpdateAssetModifiersNetworked; // 0x1185
[[maybe_unused]] std::uint8_t pad_0x1186[0x2]; // 0x1186
float m_flRangeDisplayDist; // 0x1188
[[maybe_unused]] std::uint8_t pad_0x118c[0x1e4]; // 0x118c
CUtlSymbolLarge m_szDefaultIdle; // 0x1370
CUtlSymbolLarge m_szDefaultRareIdle; // 0x1378
client::CountdownTimer m_damagetimer; // 0x1380
Vector m_vRenderOrigin; // 0x1398
float m_fZDelta; // 0x13a4
entity2::GameTick_t m_nAssetModifiersLastUpdatedTick; // 0x1188
bool m_bSuppressGlow; // 0x118c
bool m_bWasSinking; // 0x118d
[[maybe_unused]] std::uint8_t pad_0x118e[0x2]; // 0x118e
float m_flRangeDisplayDist; // 0x1190
[[maybe_unused]] std::uint8_t pad_0x1194[0x1e4]; // 0x1194
CUtlSymbolLarge m_szDefaultIdle; // 0x1378
CUtlSymbolLarge m_szDefaultRareIdle; // 0x1380
client::CountdownTimer m_damagetimer; // 0x1388
Vector m_vRenderOrigin; // 0x13a0
float m_fZDelta; // 0x13ac
// metadata: MNetworkEnable
entity2::GameTime_t m_flDeathTime; // 0x13a8
bool m_bBaseStatsChanged; // 0x13ac
bool m_bNeedsSoundEmitterRefresh; // 0x13ad
[[maybe_unused]] std::uint8_t pad_0x13ae[0x2]; // 0x13ae
entity2::GameTime_t m_flDeathTime; // 0x13b0
bool m_bBaseStatsChanged; // 0x13b4
bool m_bNeedsSoundEmitterRefresh; // 0x13b5
[[maybe_unused]] std::uint8_t pad_0x13b6[0x2]; // 0x13b6
// metadata: MNetworkEnable
float m_flPhysicalArmorValue; // 0x13b0
float m_flPhysicalArmorValue; // 0x13b8
// metadata: MNetworkEnable
float m_flMagicalResistanceValue; // 0x13b4
int32_t m_nPrevSequenceParity; // 0x13b8
[[maybe_unused]] std::uint8_t pad_0x13bc[0xa4]; // 0x13bc
float m_flPrevInvisLevel; // 0x1460
[[maybe_unused]] std::uint8_t pad_0x1464[0x4]; // 0x1464
float m_flMagicalResistanceValue; // 0x13bc
int32_t m_nPrevSequenceParity; // 0x13c0
[[maybe_unused]] std::uint8_t pad_0x13c4[0xa4]; // 0x13c4
float m_flPrevInvisLevel; // 0x1468
[[maybe_unused]] std::uint8_t pad_0x146c[0x4]; // 0x146c
// m_nOriginalModelIndex has a template type with potentially unknown template parameters. You can try uncommenting the field below.
// CStrongHandle<resourcesystem::InfoForResourceTypeCModel> m_nOriginalModelIndex;
char m_nOriginalModelIndex[0x8]; // 0x1468
char m_nOriginalModelIndex[0x8]; // 0x1470
// m_nClientOriginalModelIndex has a template type with potentially unknown template parameters. You can try uncommenting the field below.
// CStrongHandle<resourcesystem::InfoForResourceTypeCModel> m_nClientOriginalModelIndex;
char m_nClientOriginalModelIndex[0x8]; // 0x1470
char m_nClientOriginalModelIndex[0x8]; // 0x1478
// m_nClientReplacementModelIndex has a template type with potentially unknown template parameters. You can try uncommenting the field below.
// CStrongHandle<resourcesystem::InfoForResourceTypeCModel> m_nClientReplacementModelIndex;
char m_nClientReplacementModelIndex[0x8]; // 0x1478
bool m_bClientReplacementModelNeedsRebuild; // 0x1480
[[maybe_unused]] std::uint8_t pad_0x1481[0x3]; // 0x1481
int32_t m_nClientReplacementModelReloadCount; // 0x1484
char m_nClientReplacementModelIndex[0x8]; // 0x1480
bool m_bClientReplacementModelNeedsRebuild; // 0x1488
[[maybe_unused]] std::uint8_t pad_0x1489[0x3]; // 0x1489
int32_t m_nClientReplacementModelReloadCount; // 0x148c
// metadata: MNetworkEnable
// metadata: MNetworkChangeCallback "OnUnitModelVariantChanged"
int8_t m_nUnitModelVariant; // 0x1488
int8_t m_nUnitModelVariantCount; // 0x1489
[[maybe_unused]] std::uint8_t pad_0x148a[0x2]; // 0x148a
int32_t m_iPrevSequence; // 0x148c
char* m_pLastWeatherEffectName; // 0x1490
[[maybe_unused]] std::uint8_t pad_0x1498[0x8]; // 0x1498
client::CountdownTimer m_VoiceBackgroundSoundTimer; // 0x14a0
int8_t m_nUnitModelVariant; // 0x1490
int8_t m_nUnitModelVariantCount; // 0x1491
[[maybe_unused]] std::uint8_t pad_0x1492[0x2]; // 0x1492
int32_t m_iPrevSequence; // 0x1494
char* m_pLastWeatherEffectName; // 0x1498
[[maybe_unused]] std::uint8_t pad_0x14a0[0x8]; // 0x14a0
client::CountdownTimer m_VoiceBackgroundSoundTimer; // 0x14a8
// metadata: MNetworkEnable
bool m_bIsWaitingToSpawn; // 0x14b8
[[maybe_unused]] std::uint8_t pad_0x14b9[0x7]; // 0x14b9
bool m_bIsWaitingToSpawn; // 0x14c0
[[maybe_unused]] std::uint8_t pad_0x14c1[0x7]; // 0x14c1
// metadata: MNetworkEnable
int64_t m_nTotalDamageTaken; // 0x14c0
int64_t m_nTotalDamageTaken; // 0x14c8
// metadata: MNetworkEnable
// metadata: MNetworkBitCount "18"
// metadata: MNetworkMinValue "-100,000000"
// metadata: MNetworkMaxValue "1000,000000"
// metadata: MNetworkChangeCallback "OnManaRegenChanged"
float m_flManaRegen; // 0x14c8
float m_flManaRegen; // 0x14d0
// metadata: MNetworkEnable
// metadata: MNetworkBitCount "18"
// metadata: MNetworkMinValue "-100,000000"
// metadata: MNetworkMaxValue "1000,000000"
// metadata: MNetworkChangeCallback "OnHealthRegenChanged"
float m_flHealthRegen; // 0x14cc
float m_flHealthRegen; // 0x14d4
// metadata: MNetworkEnable
bool m_bIsMoving; // 0x14d0
[[maybe_unused]] std::uint8_t pad_0x14d1[0x3]; // 0x14d1
bool m_bIsMoving; // 0x14d8
[[maybe_unused]] std::uint8_t pad_0x14d9[0x3]; // 0x14d9
// metadata: MNetworkEnable
float m_fRevealRadius; // 0x14d4
float m_fRevealRadius; // 0x14dc
// metadata: MNetworkEnable
bool m_bCanUseWards; // 0x14d8
bool m_bCanUseWards; // 0x14e0
// metadata: MNetworkEnable
bool m_bCanUseAllItems; // 0x14d9
[[maybe_unused]] std::uint8_t pad_0x14da[0x2]; // 0x14da
bool m_bCanUseAllItems; // 0x14e1
[[maybe_unused]] std::uint8_t pad_0x14e2[0x2]; // 0x14e2
// metadata: MNetworkEnable
int32_t m_iXPBounty; // 0x14dc
int32_t m_iXPBounty; // 0x14e4
// metadata: MNetworkEnable
int32_t m_iXPBountyExtra; // 0x14e0
int32_t m_iXPBountyExtra; // 0x14e8
// metadata: MNetworkEnable
int32_t m_iGoldBountyMin; // 0x14e4
int32_t m_iGoldBountyMin; // 0x14ec
// metadata: MNetworkEnable
int32_t m_iGoldBountyMax; // 0x14e8
int32_t m_iGoldBountyMax; // 0x14f0
// metadata: MNetworkEnable
// m_hOwnerNPC has a template type with potentially unknown template parameters. You can try uncommenting the field below.
// CHandle<client::C_BaseEntity> m_hOwnerNPC;
char m_hOwnerNPC[0x4]; // 0x14ec
char m_hOwnerNPC[0x4]; // 0x14f4
// metadata: MNetworkEnable
// m_hGoalEntity has a template type with potentially unknown template parameters. You can try uncommenting the field below.
// CHandle<client::C_BaseEntity> m_hGoalEntity;
char m_hGoalEntity[0x4]; // 0x14f0
char m_hGoalEntity[0x4]; // 0x14f8
// metadata: MNetworkEnable
// m_hNeutralSpawner has a template type with potentially unknown template parameters. You can try uncommenting the field below.
// CHandle<client::C_DOTA_NeutralSpawner> m_hNeutralSpawner;
char m_hNeutralSpawner[0x4]; // 0x14f4
char m_hNeutralSpawner[0x4]; // 0x14fc
// m_hClientOverrideMaterial has a template type with potentially unknown template parameters. You can try uncommenting the field below.
// CStrongHandle<resourcesystem::InfoForResourceTypeIMaterial2> m_hClientOverrideMaterial;
char m_hClientOverrideMaterial[0x8]; // 0x14f8
bool m_bCombinerMaterialOverrideListChanged; // 0x1500
[[maybe_unused]] std::uint8_t pad_0x1501[0x3]; // 0x1501
int32_t m_nBaseModelMeshCount; // 0x1504
char m_hClientOverrideMaterial[0x8]; // 0x1500
bool m_bCombinerMaterialOverrideListChanged; // 0x1508
[[maybe_unused]] std::uint8_t pad_0x1509[0x3]; // 0x1509
int32_t m_nBaseModelMeshCount; // 0x150c
// m_combinerMaterialOverrideList has a template type with potentially unknown template parameters. You can try uncommenting the field below.
// CUtlVector<CStrongHandleCopyable<resourcesystem::InfoForResourceTypeIMaterial2>> m_combinerMaterialOverrideList;
char m_combinerMaterialOverrideList[0x18]; // 0x1508
int8_t m_nArcanaLevel; // 0x1520
int8_t m_nDefaultArcanaLevel; // 0x1521
Color m_defaultColorGemColor; // 0x1522
[[maybe_unused]] std::uint8_t pad_0x1526[0x1a]; // 0x1526
bool m_bHasBuiltWearableSpawnList; // 0x1540
bool m_bHasCostume; // 0x1541
bool m_bRecreateParticleSystemsOnModifiersChange; // 0x1542
[[maybe_unused]] std::uint8_t pad_0x1543[0x19]; // 0x1543
float m_flAdditionalSinkDelay; // 0x155c
[[maybe_unused]] std::uint8_t pad_0x1560[0xe0]; // 0x1560
char m_combinerMaterialOverrideList[0x18]; // 0x1510
int8_t m_nArcanaLevel; // 0x1528
int8_t m_nDefaultArcanaLevel; // 0x1529
Color m_defaultColorGemColor; // 0x152a
[[maybe_unused]] std::uint8_t pad_0x152e[0x1a]; // 0x152e
bool m_bHasBuiltWearableSpawnList; // 0x1548
bool m_bHasCostume; // 0x1549
bool m_bRecreateParticleSystemsOnModifiersChange; // 0x154a
[[maybe_unused]] std::uint8_t pad_0x154b[0x19]; // 0x154b
float m_flAdditionalSinkDelay; // 0x1564
[[maybe_unused]] std::uint8_t pad_0x1568[0xe0]; // 0x1568
// metadata: MNetworkEnable
// metadata: MNetworkPriority "32"
int32_t m_NetworkActivity; // 0x1640
int32_t m_PrevNetworkActivity; // 0x1644
int32_t m_NetworkActivity; // 0x1648
int32_t m_PrevNetworkActivity; // 0x164c
// metadata: MNetworkEnable
// metadata: MNetworkPriority "32"
int32_t m_NetworkSequenceIndex; // 0x1648
int32_t m_NetworkSequenceIndex; // 0x1650
// metadata: MNetworkEnable
bool m_bShouldDoFlyHeightVisual; // 0x164c
[[maybe_unused]] std::uint8_t pad_0x164d[0x3]; // 0x164d
bool m_bShouldDoFlyHeightVisual; // 0x1654
[[maybe_unused]] std::uint8_t pad_0x1655[0x3]; // 0x1655
// metadata: MNetworkEnable
float m_flStartSequenceCycle; // 0x1650
[[maybe_unused]] std::uint8_t pad_0x1654[0x4]; // 0x1654
float m_flStartSequenceCycle; // 0x1658
[[maybe_unused]] std::uint8_t pad_0x165c[0x4]; // 0x165c
// m_ActivityModifiers has a template type with potentially unknown template parameters. You can try uncommenting the field below.
// CUtlVector<CUtlSymbol> m_ActivityModifiers;
char m_ActivityModifiers[0x18]; // 0x1658
char m_ActivityModifiers[0x18]; // 0x1660
// m_hBackgroundSceneEnt has a template type with potentially unknown template parameters. You can try uncommenting the field below.
// CHandle<client::C_SceneEntity> m_hBackgroundSceneEnt;
char m_hBackgroundSceneEnt[0x4]; // 0x1670
char m_hBackgroundSceneEnt[0x4]; // 0x1678
// m_hSpeakingSceneEnt has a template type with potentially unknown template parameters. You can try uncommenting the field below.
// CHandle<client::C_SceneEntity> m_hSpeakingSceneEnt;
char m_hSpeakingSceneEnt[0x4]; // 0x1674
[[maybe_unused]] std::uint8_t pad_0x1678[0x10]; // 0x1678
char m_hSpeakingSceneEnt[0x4]; // 0x167c
[[maybe_unused]] std::uint8_t pad_0x1680[0x10]; // 0x1680
// m_hOldWearables has a template type with potentially unknown template parameters. You can try uncommenting the field below.
// CUtlVector<CHandle<client::C_EconWearable>> m_hOldWearables;
char m_hOldWearables[0x18]; // 0x1688
char m_hOldWearables[0x18]; // 0x1690
// m_hOldWearableSkins has a template type with potentially unknown template parameters. You can try uncommenting the field below.
// CUtlVector<CUtlStringToken> m_hOldWearableSkins;
char m_hOldWearableSkins[0x18]; // 0x16a0
char m_hOldWearableSkins[0x18]; // 0x16a8
// metadata: MNetworkEnable
char m_CustomHealthLabel[256]; // 0x16b8
char m_CustomHealthLabel[256]; // 0x16c0
// metadata: MNetworkEnable
Color m_CustomHealthLabelColor; // 0x17b8
client::item_definition_index_t m_nWearableDefIndex; // 0x17bc
[[maybe_unused]] std::uint8_t pad_0x17c0[0x1]; // 0x17c0
Color m_gibTintColor; // 0x17c1
bool m_bForceMaterialCombine; // 0x17c5
bool m_bShouldDrawParticlesWhileHidden; // 0x17c6
bool m_bIsClientThinkPending; // 0x17c7
bool m_bActivityModifiersDirty; // 0x17c8
bool m_bUnitModelVariantChanged; // 0x17c9
bool m_bWearablesAreTaunting; // 0x17ca
[[maybe_unused]] std::uint8_t pad_0x17cb[0x15]; // 0x17cb
bool m_bShowCannotBeDisabledIcon; // 0x17e0
[[maybe_unused]] std::uint8_t pad_0x17e1[0x1f];
Color m_CustomHealthLabelColor; // 0x17c0
client::item_definition_index_t m_nWearableDefIndex; // 0x17c4
[[maybe_unused]] std::uint8_t pad_0x17c8[0x1]; // 0x17c8
Color m_gibTintColor; // 0x17c9
bool m_bForceMaterialCombine; // 0x17cd
bool m_bShouldDrawParticlesWhileHidden; // 0x17ce
bool m_bIsClientThinkPending; // 0x17cf
bool m_bActivityModifiersDirty; // 0x17d0
bool m_bUnitModelVariantChanged; // 0x17d1
bool m_bWearablesAreTaunting; // 0x17d2
[[maybe_unused]] std::uint8_t pad_0x17d3[0x15]; // 0x17d3
bool m_bShowCannotBeDisabledIcon; // 0x17e8
[[maybe_unused]] std::uint8_t pad_0x17e9[0x1f];
// Datamap fields:
// int32_t InputSetStyleOverride; // 0x0
@ -548,5 +554,5 @@ namespace source2sdk::client
#pragma pack(pop)
// Cannot assert offsets of fields in C_DOTA_BaseNPC because it is not a standard-layout class
static_assert(sizeof(C_DOTA_BaseNPC) == 0x1800);
static_assert(sizeof(C_DOTA_BaseNPC) == 0x1808);
};

View File

@ -14,7 +14,7 @@ namespace source2sdk::client
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: false
// Size: 0x1800
// Size: 0x1808
// Has VTable
// Construct allowed
// MNetworkAssumeNotNetworkable
@ -26,5 +26,5 @@ namespace source2sdk::client
};
#pragma pack(pop)
static_assert(sizeof(C_DOTA_BaseNPC_Additive) == 0x1800);
static_assert(sizeof(C_DOTA_BaseNPC_Additive) == 0x1808);
};

View File

@ -14,7 +14,7 @@ namespace source2sdk::client
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: false
// Size: 0x1870
// Size: 0x1878
// Has VTable
// Construct allowed
// MNetworkAssumeNotNetworkable
@ -26,5 +26,5 @@ namespace source2sdk::client
};
#pragma pack(pop)
static_assert(sizeof(C_DOTA_BaseNPC_Barracks) == 0x1870);
static_assert(sizeof(C_DOTA_BaseNPC_Barracks) == 0x1878);
};

View File

@ -19,7 +19,7 @@ namespace source2sdk::client
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: false
// Size: 0x1870
// Size: 0x1878
// Has VTable
// Construct allowed
// MClassHasEntityLimitedDataDesc
@ -35,45 +35,45 @@ namespace source2sdk::client
{
public:
// metadata: MNetworkEnable
int32_t m_iDamageLevel; // 0x1800
client::ParticleIndex_t m_nAmbientFXIndex; // 0x1804
client::ParticleIndex_t m_nTPFXIndex; // 0x1808
client::ParticleIndex_t m_nStatusFXIndex; // 0x180c
int32_t m_iDamageLevel; // 0x1808
client::ParticleIndex_t m_nAmbientFXIndex; // 0x180c
client::ParticleIndex_t m_nTPFXIndex; // 0x1810
client::ParticleIndex_t m_nStatusFXIndex; // 0x1814
// metadata: MNetworkEnable
// m_nFXIndex has a template type with potentially unknown template parameters. You can try uncommenting the field below.
// CStrongHandle<resourcesystem::InfoForResourceTypeIParticleSystemDefinition> m_nFXIndex;
char m_nFXIndex[0x8]; // 0x1810
char m_nFXIndex[0x8]; // 0x1818
// metadata: MNetworkEnable
// m_nFXIndexDestruction has a template type with potentially unknown template parameters. You can try uncommenting the field below.
// CStrongHandle<resourcesystem::InfoForResourceTypeIParticleSystemDefinition> m_nFXIndexDestruction;
char m_nFXIndexDestruction[0x8]; // 0x1818
char m_nFXIndexDestruction[0x8]; // 0x1820
// metadata: MNetworkEnable
QAngle m_angInitialAngles; // 0x1820
QAngle m_angInitialAngles; // 0x1828
// metadata: MNetworkEnable
animationsystem::HSequence m_hHeroStatueSequence; // 0x182c
animationsystem::HSequence m_hHeroStatueSequence; // 0x1834
// metadata: MNetworkEnable
animationsystem::HSequence m_hConstantLayerSequence; // 0x1830
animationsystem::HSequence m_hConstantLayerSequence; // 0x1838
// metadata: MNetworkEnable
float m_fHeroStatueCycle; // 0x1834
float m_fHeroStatueCycle; // 0x183c
// metadata: MNetworkEnable
int32_t m_iHeroStatueStatusEffectIndex; // 0x1838
int32_t m_iHeroStatueStatusEffectIndex; // 0x1840
// metadata: MNetworkEnable
bool m_bHeroStatue; // 0x183c
bool m_bHeroStatue; // 0x1844
// metadata: MNetworkEnable
bool m_bBattleCup; // 0x183d
bool m_bBattleCup; // 0x1845
// metadata: MNetworkEnable
char m_HeroStatueInscription[32]; // 0x183e
[[maybe_unused]] std::uint8_t pad_0x185e[0x2]; // 0x185e
char m_HeroStatueInscription[32]; // 0x1846
[[maybe_unused]] std::uint8_t pad_0x1866[0x2]; // 0x1866
// metadata: MNetworkEnable
client::PlayerID_t m_iHeroStatueOwnerPlayerID; // 0x1860
client::PlayerID_t m_iHeroStatueOwnerPlayerID; // 0x1868
// metadata: MNetworkEnable
Color m_ParticleTintColor; // 0x1864
Color m_ParticleTintColor; // 0x186c
// metadata: MNetworkEnable
client::FowCustomTeams_t m_nFoWTeam; // 0x1868
[[maybe_unused]] std::uint8_t pad_0x186c[0x4];
client::FowCustomTeams_t m_nFoWTeam; // 0x1870
[[maybe_unused]] std::uint8_t pad_0x1874[0x4];
};
#pragma pack(pop)
// Cannot assert offsets of fields in C_DOTA_BaseNPC_Building because it is not a standard-layout class
static_assert(sizeof(C_DOTA_BaseNPC_Building) == 0x1870);
static_assert(sizeof(C_DOTA_BaseNPC_Building) == 0x1878);
};

View File

@ -14,7 +14,7 @@ namespace source2sdk::client
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: false
// Size: 0x1800
// Size: 0x1808
// Has VTable
// Construct allowed
// MClassHasEntityLimitedDataDesc
@ -27,5 +27,5 @@ namespace source2sdk::client
};
#pragma pack(pop)
static_assert(sizeof(C_DOTA_BaseNPC_Clinkz_Skeleton_Army) == 0x1800);
static_assert(sizeof(C_DOTA_BaseNPC_Clinkz_Skeleton_Army) == 0x1808);
};

View File

@ -14,7 +14,7 @@ namespace source2sdk::client
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: false
// Size: 0x1810
// Size: 0x1818
// Has VTable
// Construct allowed
// MClassHasEntityLimitedDataDesc
@ -27,13 +27,13 @@ namespace source2sdk::client
{
public:
// metadata: MNetworkEnable
bool m_bIsCurrentlyChanneling; // 0x1808
[[maybe_unused]] std::uint8_t pad_0x1809[0x3]; // 0x1809
bool m_bIsCurrentlyChanneling; // 0x1810
[[maybe_unused]] std::uint8_t pad_0x1811[0x3]; // 0x1811
// metadata: MNetworkEnable
float m_flChannelCycle; // 0x180c
float m_flChannelCycle; // 0x1814
};
#pragma pack(pop)
// Cannot assert offsets of fields in C_DOTA_BaseNPC_Creature because it is not a standard-layout class
static_assert(sizeof(C_DOTA_BaseNPC_Creature) == 0x1810);
static_assert(sizeof(C_DOTA_BaseNPC_Creature) == 0x1818);
};

View File

@ -14,7 +14,7 @@ namespace source2sdk::client
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: false
// Size: 0x1808
// Size: 0x1810
// Has VTable
// Construct allowed
// MNetworkAssumeNotNetworkable
@ -25,11 +25,11 @@ namespace source2sdk::client
{
public:
// metadata: MNetworkEnable
float m_flAim; // 0x1800
[[maybe_unused]] std::uint8_t pad_0x1804[0x4];
float m_flAim; // 0x1808
[[maybe_unused]] std::uint8_t pad_0x180c[0x4];
};
#pragma pack(pop)
// Cannot assert offsets of fields in C_DOTA_BaseNPC_Creep because it is not a standard-layout class
static_assert(sizeof(C_DOTA_BaseNPC_Creep) == 0x1808);
static_assert(sizeof(C_DOTA_BaseNPC_Creep) == 0x1810);
};

View File

@ -15,7 +15,7 @@ namespace source2sdk::client
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: false
// Size: 0x1810
// Size: 0x1818
// Has VTable
// Construct allowed
// MNetworkAssumeNotNetworkable
@ -53,11 +53,11 @@ namespace source2sdk::client
{
public:
// metadata: MNetworkEnable
client::FowCustomTeams_t m_nFoWTeam; // 0x1808
[[maybe_unused]] std::uint8_t pad_0x180c[0x4];
client::FowCustomTeams_t m_nFoWTeam; // 0x1810
[[maybe_unused]] std::uint8_t pad_0x1814[0x4];
};
#pragma pack(pop)
// Cannot assert offsets of fields in C_DOTA_BaseNPC_Creep_Lane because it is not a standard-layout class
static_assert(sizeof(C_DOTA_BaseNPC_Creep_Lane) == 0x1810);
static_assert(sizeof(C_DOTA_BaseNPC_Creep_Lane) == 0x1818);
};

View File

@ -14,7 +14,7 @@ namespace source2sdk::client
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: false
// Size: 0x1810
// Size: 0x1818
// Has VTable
// Construct allowed
// MNetworkAssumeNotNetworkable
@ -22,10 +22,10 @@ namespace source2sdk::client
class C_DOTA_BaseNPC_Creep_Neutral : public client::C_DOTA_BaseNPC_Creep
{
public:
CUtlString m_sDisplayName; // 0x1808
CUtlString m_sDisplayName; // 0x1810
};
#pragma pack(pop)
// Cannot assert offsets of fields in C_DOTA_BaseNPC_Creep_Neutral because it is not a standard-layout class
static_assert(sizeof(C_DOTA_BaseNPC_Creep_Neutral) == 0x1810);
static_assert(sizeof(C_DOTA_BaseNPC_Creep_Neutral) == 0x1818);
};

View File

@ -14,7 +14,7 @@ namespace source2sdk::client
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: false
// Size: 0x1810
// Size: 0x1818
// Has VTable
// Construct allowed
// MNetworkAssumeNotNetworkable
@ -26,5 +26,5 @@ namespace source2sdk::client
};
#pragma pack(pop)
static_assert(sizeof(C_DOTA_BaseNPC_Creep_Siege) == 0x1810);
static_assert(sizeof(C_DOTA_BaseNPC_Creep_Siege) == 0x1818);
};

View File

@ -14,7 +14,7 @@ namespace source2sdk::client
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: false
// Size: 0x1808
// Size: 0x1810
// Has VTable
// Construct allowed
// MNetworkAssumeNotNetworkable
@ -26,5 +26,5 @@ namespace source2sdk::client
};
#pragma pack(pop)
static_assert(sizeof(C_DOTA_BaseNPC_Creep_Talking) == 0x1808);
static_assert(sizeof(C_DOTA_BaseNPC_Creep_Talking) == 0x1810);
};

View File

@ -14,7 +14,7 @@ namespace source2sdk::client
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: false
// Size: 0x1870
// Size: 0x1878
// Has VTable
// Construct allowed
// MClassHasEntityLimitedDataDesc
@ -27,5 +27,5 @@ namespace source2sdk::client
};
#pragma pack(pop)
static_assert(sizeof(C_DOTA_BaseNPC_Effigy_BattleCup) == 0x1870);
static_assert(sizeof(C_DOTA_BaseNPC_Effigy_BattleCup) == 0x1878);
};

View File

@ -14,7 +14,7 @@ namespace source2sdk::client
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: false
// Size: 0x1870
// Size: 0x1878
// Has VTable
// Construct allowed
// MClassHasEntityLimitedDataDesc
@ -27,5 +27,5 @@ namespace source2sdk::client
};
#pragma pack(pop)
static_assert(sizeof(C_DOTA_BaseNPC_Effigy_Statue) == 0x1870);
static_assert(sizeof(C_DOTA_BaseNPC_Effigy_Statue) == 0x1878);
};

View File

@ -14,7 +14,7 @@ namespace source2sdk::client
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: false
// Size: 0x1870
// Size: 0x1878
// Has VTable
// Construct allowed
// MNetworkAssumeNotNetworkable
@ -26,5 +26,5 @@ namespace source2sdk::client
};
#pragma pack(pop)
static_assert(sizeof(C_DOTA_BaseNPC_Filler) == 0x1870);
static_assert(sizeof(C_DOTA_BaseNPC_Filler) == 0x1878);
};

View File

@ -14,7 +14,7 @@ namespace source2sdk::client
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: false
// Size: 0x1870
// Size: 0x1878
// Has VTable
// Construct allowed
// MClassHasEntityLimitedDataDesc
@ -27,5 +27,5 @@ namespace source2sdk::client
};
#pragma pack(pop)
static_assert(sizeof(C_DOTA_BaseNPC_Fort) == 0x1870);
static_assert(sizeof(C_DOTA_BaseNPC_Fort) == 0x1878);
};

View File

@ -14,7 +14,7 @@ namespace source2sdk::client
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: false
// Size: 0x1878
// Size: 0x1880
// Has VTable
// Construct allowed
// MClassHasEntityLimitedDataDesc
@ -23,11 +23,11 @@ namespace source2sdk::client
class C_DOTA_BaseNPC_HallofFame : public client::C_DOTA_BaseNPC_Building
{
public:
int32_t m_HallofFame; // 0x1870
[[maybe_unused]] std::uint8_t pad_0x1874[0x4];
int32_t m_HallofFame; // 0x1878
[[maybe_unused]] std::uint8_t pad_0x187c[0x4];
};
#pragma pack(pop)
// Cannot assert offsets of fields in C_DOTA_BaseNPC_HallofFame because it is not a standard-layout class
static_assert(sizeof(C_DOTA_BaseNPC_HallofFame) == 0x1878);
static_assert(sizeof(C_DOTA_BaseNPC_HallofFame) == 0x1880);
};

View File

@ -15,7 +15,7 @@ namespace source2sdk::client
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: false
// Size: 0x1878
// Size: 0x1880
// Has VTable
// Construct allowed
// MClassHasEntityLimitedDataDesc
@ -24,11 +24,11 @@ namespace source2sdk::client
class C_DOTA_BaseNPC_Healer : public client::C_DOTA_BaseNPC_Building
{
public:
client::ParticleIndex_t m_iRangeFX; // 0x1870
[[maybe_unused]] std::uint8_t pad_0x1874[0x4];
client::ParticleIndex_t m_iRangeFX; // 0x1878
[[maybe_unused]] std::uint8_t pad_0x187c[0x4];
};
#pragma pack(pop)
// Cannot assert offsets of fields in C_DOTA_BaseNPC_Healer because it is not a standard-layout class
static_assert(sizeof(C_DOTA_BaseNPC_Healer) == 0x1878);
static_assert(sizeof(C_DOTA_BaseNPC_Healer) == 0x1880);
};

View File

@ -26,7 +26,7 @@ namespace source2sdk::client
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: false
// Size: 0x1b88
// Size: 0x1b90
// Has VTable
// Construct allowed
// MClassHasEntityLimitedDataDesc
@ -58,103 +58,103 @@ namespace source2sdk::client
class C_DOTA_BaseNPC_Hero : public client::C_DOTA_BaseNPC_Additive
{
public:
[[maybe_unused]] std::uint8_t pad_0x1800[0x8]; // 0x1800
[[maybe_unused]] std::uint8_t pad_0x1808[0x8]; // 0x1808
// metadata: MNetworkEnable
// metadata: MNetworkPriority "32"
int32_t m_iCurrentXP; // 0x1808
int32_t m_iCurrentXP; // 0x1810
// metadata: MNetworkEnable
// metadata: MNetworkChangeCallback "OnAbilityPointsChanged"
int32_t m_iAbilityPoints; // 0x180c
int32_t m_iAbilityPoints; // 0x1814
// metadata: MNetworkEnable
int32_t m_iTotalAbilityPoints; // 0x1810
int32_t m_iTotalAbilityPoints; // 0x1818
// metadata: MNetworkEnable
entity2::GameTime_t m_flRespawnTime; // 0x1814
entity2::GameTime_t m_flRespawnTime; // 0x181c
// metadata: MNetworkEnable
float m_flRespawnTimePenalty; // 0x1818
float m_flRespawnTimePenalty; // 0x1820
// metadata: MNetworkEnable
// metadata: MNetworkChangeCallback "OnBaseStatChanged"
float m_flStrength; // 0x181c
float m_flStrength; // 0x1824
// metadata: MNetworkEnable
// metadata: MNetworkChangeCallback "OnBaseStatChanged"
float m_flAgility; // 0x1820
float m_flAgility; // 0x1828
// metadata: MNetworkEnable
// metadata: MNetworkChangeCallback "OnBaseStatChanged"
float m_flIntellect; // 0x1824
float m_flIntellect; // 0x182c
// metadata: MNetworkEnable
// metadata: MNetworkChangeCallback "OnBaseStatChanged"
float m_flStrengthTotal; // 0x1828
float m_flStrengthTotal; // 0x1830
// metadata: MNetworkEnable
// metadata: MNetworkChangeCallback "OnBaseStatChanged"
float m_flAgilityTotal; // 0x182c
float m_flAgilityTotal; // 0x1834
// metadata: MNetworkEnable
// metadata: MNetworkChangeCallback "OnBaseStatChanged"
float m_flIntellectTotal; // 0x1830
[[maybe_unused]] std::uint8_t pad_0x1834[0x4]; // 0x1834
float m_flIntellectTotal; // 0x1838
[[maybe_unused]] std::uint8_t pad_0x183c[0x4]; // 0x183c
// metadata: MNetworkEnable
// m_hFacetAbilities has a template type with potentially unknown template parameters. You can try uncommenting the field below.
// C_NetworkUtlVectorBase<CHandle<client::C_BaseEntity>> m_hFacetAbilities;
char m_hFacetAbilities[0x18]; // 0x1838
char m_hFacetAbilities[0x18]; // 0x1840
// metadata: MNetworkEnable
int32_t m_iRecentDamage; // 0x1850
float m_fPainFactor; // 0x1854
float m_fTargetPainFactor; // 0x1858
bool m_bLifeState; // 0x185c
bool m_bFirstSpawn; // 0x185d
[[maybe_unused]] std::uint8_t pad_0x185e[0x2]; // 0x185e
client::ParticleIndex_t m_nFXStunIndex; // 0x1860
client::ParticleIndex_t m_nFXSilenceIndex; // 0x1864
client::ParticleIndex_t m_nFXDeathIndex; // 0x1868
[[maybe_unused]] std::uint8_t pad_0x186c[0x24]; // 0x186c
int32_t m_iRecentDamage; // 0x1858
float m_fPainFactor; // 0x185c
float m_fTargetPainFactor; // 0x1860
bool m_bLifeState; // 0x1864
bool m_bFirstSpawn; // 0x1865
[[maybe_unused]] std::uint8_t pad_0x1866[0x2]; // 0x1866
client::ParticleIndex_t m_nFXStunIndex; // 0x1868
client::ParticleIndex_t m_nFXSilenceIndex; // 0x186c
client::ParticleIndex_t m_nFXDeathIndex; // 0x1870
[[maybe_unused]] std::uint8_t pad_0x1874[0x24]; // 0x1874
// metadata: MNetworkEnable
client::PlayerID_t m_iPlayerID; // 0x1890
client::PlayerID_t m_iPlayerID; // 0x1898
// metadata: MNetworkEnable
client::HeroFacetID_t m_iHeroFacetID; // 0x1894
client::HeroFacetID_t m_iHeroFacetID; // 0x189c
// metadata: MNetworkEnable
// m_hReplicatingOtherHeroModel has a template type with potentially unknown template parameters. You can try uncommenting the field below.
// CHandle<client::C_DOTA_BaseNPC_Hero> m_hReplicatingOtherHeroModel;
char m_hReplicatingOtherHeroModel[0x4]; // 0x1898
char m_hReplicatingOtherHeroModel[0x4]; // 0x18a0
// metadata: MNetworkEnable
bool m_bReincarnating; // 0x189c
bool m_bReincarnating; // 0x18a4
// metadata: MNetworkEnable
bool m_bCustomKillEffect; // 0x189d
[[maybe_unused]] std::uint8_t pad_0x189e[0x2]; // 0x189e
bool m_bCustomKillEffect; // 0x18a5
[[maybe_unused]] std::uint8_t pad_0x18a6[0x2]; // 0x18a6
// metadata: MNetworkEnable
entity2::GameTime_t m_flSpawnedAt; // 0x18a0
entity2::GameTime_t m_flSpawnedAt; // 0x18a8
// metadata: MNetworkEnable
bool m_bScriptDisableRespawns; // 0x18a4
[[maybe_unused]] std::uint8_t pad_0x18a5[0x3]; // 0x18a5
bool m_bScriptDisableRespawns; // 0x18ac
[[maybe_unused]] std::uint8_t pad_0x18ad[0x3]; // 0x18ad
// metadata: MNetworkEnable
int32_t m_iPrimaryAttribute; // 0x18a8
int32_t m_nLastDrawnHealth; // 0x18ac
float m_flHurtAmount; // 0x18b0
entity2::GameTime_t m_flLastHurtTime; // 0x18b4
float m_flHurtDecayRate; // 0x18b8
entity2::GameTime_t m_flLastHealTime; // 0x18bc
entity2::GameTime_t m_flLastTreeShakeTime; // 0x18c0
[[maybe_unused]] std::uint8_t pad_0x18c4[0x4]; // 0x18c4
client::CountdownTimer m_CenterOnHeroCooldownTimer; // 0x18c8
[[maybe_unused]] std::uint8_t pad_0x18e0[0x208]; // 0x18e0
int32_t m_iPrimaryAttribute; // 0x18b0
int32_t m_nLastDrawnHealth; // 0x18b4
float m_flHurtAmount; // 0x18b8
entity2::GameTime_t m_flLastHurtTime; // 0x18bc
float m_flHurtDecayRate; // 0x18c0
entity2::GameTime_t m_flLastHealTime; // 0x18c4
entity2::GameTime_t m_flLastTreeShakeTime; // 0x18c8
[[maybe_unused]] std::uint8_t pad_0x18cc[0x4]; // 0x18cc
client::CountdownTimer m_CenterOnHeroCooldownTimer; // 0x18d0
[[maybe_unused]] std::uint8_t pad_0x18e8[0x208]; // 0x18e8
// m_CombinedModels has a template type with potentially unknown template parameters. You can try uncommenting the field below.
// CStrongHandle<resourcesystem::InfoForResourceTypeCModel> m_CombinedModels[4];
char m_CombinedModels[0x20]; // 0x1ae8
int32_t m_nCurrentCombinedModelIndex; // 0x1b08
int32_t m_nPendingCombinedModelIndex; // 0x1b0c
client::HeroID_t m_iHeroID; // 0x1b10
float m_flCheckLegacyItemsAt; // 0x1b14
bool m_bDisplayAdditionalHeroes; // 0x1b18
[[maybe_unused]] std::uint8_t pad_0x1b19[0xf]; // 0x1b19
char m_CombinedModels[0x20]; // 0x1af0
int32_t m_nCurrentCombinedModelIndex; // 0x1b10
int32_t m_nPendingCombinedModelIndex; // 0x1b14
client::HeroID_t m_iHeroID; // 0x1b18
float m_flCheckLegacyItemsAt; // 0x1b1c
bool m_bDisplayAdditionalHeroes; // 0x1b20
[[maybe_unused]] std::uint8_t pad_0x1b21[0xf]; // 0x1b21
// m_CombinedParticleModels has a template type with potentially unknown template parameters. You can try uncommenting the field below.
// CStrongHandle<resourcesystem::InfoForResourceTypeCModel> m_CombinedParticleModels[4];
char m_CombinedParticleModels[0x20]; // 0x1b28
char m_CombinedParticleModels[0x20]; // 0x1b30
// m_vecAttachedParticleIndeces has a template type with potentially unknown template parameters. You can try uncommenting the field below.
// CUtlVector<client::ParticleIndex_t> m_vecAttachedParticleIndeces;
char m_vecAttachedParticleIndeces[0x18]; // 0x1b48
char m_vecAttachedParticleIndeces[0x18]; // 0x1b50
// m_hPets has a template type with potentially unknown template parameters. You can try uncommenting the field below.
// CUtlVector<CHandle<client::C_BaseEntity>> m_hPets;
char m_hPets[0x18]; // 0x1b60
client::ParticleIndex_t m_nKillStreakFX; // 0x1b78
int32_t m_nKillStreakFXTier; // 0x1b7c
// start of bitfield block at 0x1b80
char m_hPets[0x18]; // 0x1b68
client::ParticleIndex_t m_nKillStreakFX; // 0x1b80
int32_t m_nKillStreakFXTier; // 0x1b84
// start of bitfield block at 0x1b88
uint16_t m_bBuybackDisabled: 1;
uint16_t m_bWasFrozen: 1;
uint16_t m_bUpdateClientsideWearables: 1;
@ -166,10 +166,10 @@ namespace source2sdk::client
uint16_t m_bResetVisibility: 1;
uint16_t m_bStoredVisibility: 1;
// end of bitfield block // 10 bits
[[maybe_unused]] std::uint8_t pad_0x1b82[0x6];
[[maybe_unused]] std::uint8_t pad_0x1b8a[0x6];
};
#pragma pack(pop)
// Cannot assert offsets of fields in C_DOTA_BaseNPC_Hero because it is not a standard-layout class
static_assert(sizeof(C_DOTA_BaseNPC_Hero) == 0x1b88);
static_assert(sizeof(C_DOTA_BaseNPC_Hero) == 0x1b90);
};

View File

@ -15,7 +15,7 @@ namespace source2sdk::client
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: false
// Size: 0x18e8
// Size: 0x18f0
// Has VTable
// Construct allowed
// MClassHasEntityLimitedDataDesc
@ -24,11 +24,11 @@ namespace source2sdk::client
class C_DOTA_BaseNPC_HoldoutTower : public client::C_DOTA_BaseNPC_Tower
{
public:
client::DOTA_HOLDOUT_TOWER_TYPE m_iTowerType; // 0x18e0
[[maybe_unused]] std::uint8_t pad_0x18e4[0x4];
client::DOTA_HOLDOUT_TOWER_TYPE m_iTowerType; // 0x18e8
[[maybe_unused]] std::uint8_t pad_0x18ec[0x4];
};
#pragma pack(pop)
// Cannot assert offsets of fields in C_DOTA_BaseNPC_HoldoutTower because it is not a standard-layout class
static_assert(sizeof(C_DOTA_BaseNPC_HoldoutTower) == 0x18e8);
static_assert(sizeof(C_DOTA_BaseNPC_HoldoutTower) == 0x18f0);
};

View File

@ -14,7 +14,7 @@ namespace source2sdk::client
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: false
// Size: 0x18e8
// Size: 0x18f0
// Has VTable
// Construct allowed
// MNetworkAssumeNotNetworkable
@ -26,5 +26,5 @@ namespace source2sdk::client
};
#pragma pack(pop)
static_assert(sizeof(C_DOTA_BaseNPC_HoldoutTower_HeavySlow) == 0x18e8);
static_assert(sizeof(C_DOTA_BaseNPC_HoldoutTower_HeavySlow) == 0x18f0);
};

View File

@ -14,7 +14,7 @@ namespace source2sdk::client
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: false
// Size: 0x18e8
// Size: 0x18f0
// Has VTable
// Construct allowed
// MNetworkAssumeNotNetworkable
@ -26,5 +26,5 @@ namespace source2sdk::client
};
#pragma pack(pop)
static_assert(sizeof(C_DOTA_BaseNPC_HoldoutTower_LightFast) == 0x18e8);
static_assert(sizeof(C_DOTA_BaseNPC_HoldoutTower_LightFast) == 0x18f0);
};

View File

@ -14,7 +14,7 @@ namespace source2sdk::client
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: false
// Size: 0x18e8
// Size: 0x18f0
// Has VTable
// Construct allowed
// MNetworkAssumeNotNetworkable
@ -26,5 +26,5 @@ namespace source2sdk::client
};
#pragma pack(pop)
static_assert(sizeof(C_DOTA_BaseNPC_HoldoutTower_ReduceSpeed) == 0x18e8);
static_assert(sizeof(C_DOTA_BaseNPC_HoldoutTower_ReduceSpeed) == 0x18f0);
};

View File

@ -14,7 +14,7 @@ namespace source2sdk::client
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: false
// Size: 0x1808
// Size: 0x1810
// Has VTable
// Construct allowed
// MClassHasEntityLimitedDataDesc
@ -27,5 +27,5 @@ namespace source2sdk::client
};
#pragma pack(pop)
static_assert(sizeof(C_DOTA_BaseNPC_Invoker_Forged_Spirit) == 0x1808);
static_assert(sizeof(C_DOTA_BaseNPC_Invoker_Forged_Spirit) == 0x1810);
};

View File

@ -14,7 +14,7 @@ namespace source2sdk::client
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: false
// Size: 0x1870
// Size: 0x1878
// Has VTable
// Construct allowed
// MClassHasEntityLimitedDataDesc
@ -27,5 +27,5 @@ namespace source2sdk::client
};
#pragma pack(pop)
static_assert(sizeof(C_DOTA_BaseNPC_MangoTree) == 0x1870);
static_assert(sizeof(C_DOTA_BaseNPC_MangoTree) == 0x1878);
};

View File

@ -20,7 +20,7 @@ namespace source2sdk::client
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: false
// Size: 0x18b8
// Size: 0x18c0
// Has VTable
// Construct allowed
// MClassHasEntityLimitedDataDesc
@ -29,19 +29,19 @@ namespace source2sdk::client
class C_DOTA_BaseNPC_NeutralItemStash : public client::C_DOTA_BaseNPC_Building
{
public:
[[maybe_unused]] std::uint8_t pad_0x1870[0x10]; // 0x1870
[[maybe_unused]] std::uint8_t pad_0x1878[0x10]; // 0x1878
// m_vecNewItemFX has a template type with potentially unknown template parameters. You can try uncommenting the field below.
// CUtlVector<client::ParticleIndex_t> m_vecNewItemFX;
char m_vecNewItemFX[0x18]; // 0x1880
bool m_bHasFoundProps; // 0x1898
bool m_bDidHaveNewItems; // 0x1899
[[maybe_unused]] std::uint8_t pad_0x189a[0x6]; // 0x189a
char m_vecNewItemFX[0x18]; // 0x1888
bool m_bHasFoundProps; // 0x18a0
bool m_bDidHaveNewItems; // 0x18a1
[[maybe_unused]] std::uint8_t pad_0x18a2[0x6]; // 0x18a2
// m_vecProps has a template type with potentially unknown template parameters. You can try uncommenting the field below.
// CUtlVector<CHandle<client::C_DynamicPropClientside>> m_vecProps;
char m_vecProps[0x18]; // 0x18a0
char m_vecProps[0x18]; // 0x18a8
};
#pragma pack(pop)
// Cannot assert offsets of fields in C_DOTA_BaseNPC_NeutralItemStash because it is not a standard-layout class
static_assert(sizeof(C_DOTA_BaseNPC_NeutralItemStash) == 0x18b8);
static_assert(sizeof(C_DOTA_BaseNPC_NeutralItemStash) == 0x18c0);
};

View File

@ -14,7 +14,7 @@ namespace source2sdk::client
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: false
// Size: 0x1870
// Size: 0x1878
// Has VTable
// Construct allowed
// MClassHasEntityLimitedDataDesc
@ -27,5 +27,5 @@ namespace source2sdk::client
};
#pragma pack(pop)
static_assert(sizeof(C_DOTA_BaseNPC_Promo) == 0x1870);
static_assert(sizeof(C_DOTA_BaseNPC_Promo) == 0x1878);
};

View File

@ -15,7 +15,7 @@ namespace source2sdk::client
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: false
// Size: 0x1808
// Size: 0x1810
// Has VTable
// Construct allowed
// MClassHasEntityLimitedDataDesc
@ -26,13 +26,13 @@ namespace source2sdk::client
public:
// metadata: MNetworkEnable
// metadata: MNetworkAlias "m_hHeroStatueSequence"
animationsystem::HSequence m_hObsoleteHeroStatueSequence; // 0x1800
animationsystem::HSequence m_hObsoleteHeroStatueSequence; // 0x1808
// metadata: MNetworkEnable
// metadata: MNetworkAlias "m_hConstantLayerSequence"
animationsystem::HSequence m_hObsoleteConstantLayerSequence; // 0x1804
animationsystem::HSequence m_hObsoleteConstantLayerSequence; // 0x180c
};
#pragma pack(pop)
// Cannot assert offsets of fields in C_DOTA_BaseNPC_RotatableBuilding because it is not a standard-layout class
static_assert(sizeof(C_DOTA_BaseNPC_RotatableBuilding) == 0x1808);
static_assert(sizeof(C_DOTA_BaseNPC_RotatableBuilding) == 0x1810);
};

View File

@ -14,7 +14,7 @@ namespace source2sdk::client
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: false
// Size: 0x18e8
// Size: 0x18f0
// Has VTable
// Construct allowed
// MNetworkAssumeNotNetworkable
@ -27,5 +27,5 @@ namespace source2sdk::client
};
#pragma pack(pop)
static_assert(sizeof(C_DOTA_BaseNPC_SDKTower) == 0x18e8);
static_assert(sizeof(C_DOTA_BaseNPC_SDKTower) == 0x18f0);
};

View File

@ -14,7 +14,7 @@ namespace source2sdk::client
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: false
// Size: 0x1800
// Size: 0x1808
// Has VTable
// Construct allowed
// MClassHasEntityLimitedDataDesc
@ -27,5 +27,5 @@ namespace source2sdk::client
};
#pragma pack(pop)
static_assert(sizeof(C_DOTA_BaseNPC_Seasonal_Snowman) == 0x1800);
static_assert(sizeof(C_DOTA_BaseNPC_Seasonal_Snowman) == 0x1808);
};

View File

@ -14,7 +14,7 @@ namespace source2sdk::client
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: false
// Size: 0x1810
// Size: 0x1818
// Has VTable
// Construct allowed
// MClassHasEntityLimitedDataDesc
@ -23,11 +23,11 @@ namespace source2sdk::client
class C_DOTA_BaseNPC_ShadowShaman_SerpentWard : public client::C_DOTA_BaseNPC_Additive
{
public:
QAngle m_angle; // 0x1800
int32_t m_iPoseParameterAim; // 0x180c
QAngle m_angle; // 0x1808
int32_t m_iPoseParameterAim; // 0x1814
};
#pragma pack(pop)
// Cannot assert offsets of fields in C_DOTA_BaseNPC_ShadowShaman_SerpentWard because it is not a standard-layout class
static_assert(sizeof(C_DOTA_BaseNPC_ShadowShaman_SerpentWard) == 0x1810);
static_assert(sizeof(C_DOTA_BaseNPC_ShadowShaman_SerpentWard) == 0x1818);
};

View File

@ -16,7 +16,7 @@ namespace source2sdk::client
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: false
// Size: 0x18b0
// Size: 0x18b8
// Has VTable
// Construct allowed
// MClassHasEntityLimitedDataDesc
@ -28,15 +28,15 @@ namespace source2sdk::client
{
public:
// metadata: MNetworkEnable
client::DOTA_SHOP_TYPE m_ShopType; // 0x1870
[[maybe_unused]] std::uint8_t pad_0x1874[0x24]; // 0x1874
client::ParticleIndex_t m_nShopFX; // 0x1898
Vector m_vShopFXOrigin; // 0x189c
float m_flLastSpeech; // 0x18a8
[[maybe_unused]] std::uint8_t pad_0x18ac[0x4];
client::DOTA_SHOP_TYPE m_ShopType; // 0x1878
[[maybe_unused]] std::uint8_t pad_0x187c[0x24]; // 0x187c
client::ParticleIndex_t m_nShopFX; // 0x18a0
Vector m_vShopFXOrigin; // 0x18a4
float m_flLastSpeech; // 0x18b0
[[maybe_unused]] std::uint8_t pad_0x18b4[0x4];
};
#pragma pack(pop)
// Cannot assert offsets of fields in C_DOTA_BaseNPC_Shop because it is not a standard-layout class
static_assert(sizeof(C_DOTA_BaseNPC_Shop) == 0x18b0);
static_assert(sizeof(C_DOTA_BaseNPC_Shop) == 0x18b8);
};

View File

@ -21,7 +21,7 @@ namespace source2sdk::client
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: false
// Size: 0x18e0
// Size: 0x18e8
// Has VTable
// Construct allowed
// MClassHasEntityLimitedDataDesc
@ -33,39 +33,39 @@ namespace source2sdk::client
class C_DOTA_BaseNPC_Tower : public client::C_DOTA_BaseNPC_Building
{
public:
client::ParticleIndex_t m_nAltHeldRangeFX; // 0x1870
bool m_bWasInRange; // 0x1874
[[maybe_unused]] std::uint8_t pad_0x1875[0x3]; // 0x1875
client::ParticleIndex_t m_iRangeFX; // 0x1878
client::ParticleIndex_t m_iPulseFX; // 0x187c
uint8_t m_unTowerTier; // 0x1880
[[maybe_unused]] std::uint8_t pad_0x1881[0x3]; // 0x1881
float m_fTowerAggroDangerAmount; // 0x1884
float m_flControlledUnitInRangeAmount; // 0x1888
float m_flControlledUnitTargettedAmount; // 0x188c
client::ParticleIndex_t m_iAnticipationFX; // 0x1890
[[maybe_unused]] std::uint8_t pad_0x1894[0x4]; // 0x1894
CUtlSymbolLarge m_szAnticipationFXName; // 0x1898
client::ParticleIndex_t m_nAltHeldRangeFX; // 0x1878
bool m_bWasInRange; // 0x187c
[[maybe_unused]] std::uint8_t pad_0x187d[0x3]; // 0x187d
client::ParticleIndex_t m_iRangeFX; // 0x1880
client::ParticleIndex_t m_iPulseFX; // 0x1884
uint8_t m_unTowerTier; // 0x1888
[[maybe_unused]] std::uint8_t pad_0x1889[0x3]; // 0x1889
float m_fTowerAggroDangerAmount; // 0x188c
float m_flControlledUnitInRangeAmount; // 0x1890
float m_flControlledUnitTargettedAmount; // 0x1894
client::ParticleIndex_t m_iAnticipationFX; // 0x1898
[[maybe_unused]] std::uint8_t pad_0x189c[0x4]; // 0x189c
CUtlSymbolLarge m_szAnticipationFXName; // 0x18a0
// m_hPrevTowerAttackTarget has a template type with potentially unknown template parameters. You can try uncommenting the field below.
// CHandle<client::C_BaseEntity> m_hPrevTowerAttackTarget;
char m_hPrevTowerAttackTarget[0x4]; // 0x18a0
char m_hPrevTowerAttackTarget[0x4]; // 0x18a8
// metadata: MNetworkEnable
// m_hTowerAttackTarget has a template type with potentially unknown template parameters. You can try uncommenting the field below.
// CHandle<client::C_BaseEntity> m_hTowerAttackTarget;
char m_hTowerAttackTarget[0x4]; // 0x18a4
char m_hTowerAttackTarget[0x4]; // 0x18ac
// metadata: MNetworkEnable
// m_hTowerHighFiveTarget has a template type with potentially unknown template parameters. You can try uncommenting the field below.
// CHandle<client::C_BaseEntity> m_hTowerHighFiveTarget;
char m_hTowerHighFiveTarget[0x4]; // 0x18a8
int32_t m_iPoseParameterAim; // 0x18ac
QAngle m_angDefaultCustomTowerAngle; // 0x18b0
float m_flLastAimYaw; // 0x18bc
bool m_bClientSideCustomTower; // 0x18c0
[[maybe_unused]] std::uint8_t pad_0x18c1[0x7]; // 0x18c1
client::CountdownTimer m_IdleRareAnimationTime; // 0x18c8
char m_hTowerHighFiveTarget[0x4]; // 0x18b0
int32_t m_iPoseParameterAim; // 0x18b4
QAngle m_angDefaultCustomTowerAngle; // 0x18b8
float m_flLastAimYaw; // 0x18c4
bool m_bClientSideCustomTower; // 0x18c8
[[maybe_unused]] std::uint8_t pad_0x18c9[0x7]; // 0x18c9
client::CountdownTimer m_IdleRareAnimationTime; // 0x18d0
};
#pragma pack(pop)
// Cannot assert offsets of fields in C_DOTA_BaseNPC_Tower because it is not a standard-layout class
static_assert(sizeof(C_DOTA_BaseNPC_Tower) == 0x18e0);
static_assert(sizeof(C_DOTA_BaseNPC_Tower) == 0x18e8);
};

View File

@ -14,7 +14,7 @@ namespace source2sdk::client
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: false
// Size: 0x1810
// Size: 0x1818
// Has VTable
// Construct allowed
// MClassHasEntityLimitedDataDesc
@ -27,5 +27,5 @@ namespace source2sdk::client
};
#pragma pack(pop)
static_assert(sizeof(C_DOTA_BaseNPC_Trap_Ward) == 0x1810);
static_assert(sizeof(C_DOTA_BaseNPC_Trap_Ward) == 0x1818);
};

View File

@ -14,7 +14,7 @@ namespace source2sdk::client
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: false
// Size: 0x1810
// Size: 0x1818
// Has VTable
// Construct allowed
// MClassHasEntityLimitedDataDesc
@ -23,11 +23,11 @@ namespace source2sdk::client
class C_DOTA_BaseNPC_Tusk_Sigil : public client::C_DOTA_BaseNPC_Additive
{
public:
QAngle m_angInitialAngles; // 0x1800
[[maybe_unused]] std::uint8_t pad_0x180c[0x4];
QAngle m_angInitialAngles; // 0x1808
[[maybe_unused]] std::uint8_t pad_0x1814[0x4];
};
#pragma pack(pop)
// Cannot assert offsets of fields in C_DOTA_BaseNPC_Tusk_Sigil because it is not a standard-layout class
static_assert(sizeof(C_DOTA_BaseNPC_Tusk_Sigil) == 0x1810);
static_assert(sizeof(C_DOTA_BaseNPC_Tusk_Sigil) == 0x1818);
};

View File

@ -14,7 +14,7 @@ namespace source2sdk::client
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: false
// Size: 0x1818
// Size: 0x1820
// Has VTable
// Construct allowed
// MClassHasEntityLimitedDataDesc
@ -23,14 +23,14 @@ namespace source2sdk::client
class C_DOTA_BaseNPC_Venomancer_PlagueWard : public client::C_DOTA_BaseNPC_Additive
{
public:
bool m_bIsMovable; // 0x1800
[[maybe_unused]] std::uint8_t pad_0x1801[0x3]; // 0x1801
QAngle m_angle; // 0x1804
int32_t m_iPoseParameterAim; // 0x1810
[[maybe_unused]] std::uint8_t pad_0x1814[0x4];
bool m_bIsMovable; // 0x1808
[[maybe_unused]] std::uint8_t pad_0x1809[0x3]; // 0x1809
QAngle m_angle; // 0x180c
int32_t m_iPoseParameterAim; // 0x1818
[[maybe_unused]] std::uint8_t pad_0x181c[0x4];
};
#pragma pack(pop)
// Cannot assert offsets of fields in C_DOTA_BaseNPC_Venomancer_PlagueWard because it is not a standard-layout class
static_assert(sizeof(C_DOTA_BaseNPC_Venomancer_PlagueWard) == 0x1818);
static_assert(sizeof(C_DOTA_BaseNPC_Venomancer_PlagueWard) == 0x1820);
};

View File

@ -14,7 +14,7 @@ namespace source2sdk::client
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: false
// Size: 0x1808
// Size: 0x1810
// Has VTable
// Construct allowed
// MClassHasEntityLimitedDataDesc
@ -27,5 +27,5 @@ namespace source2sdk::client
};
#pragma pack(pop)
static_assert(sizeof(C_DOTA_BaseNPC_Warlock_Golem) == 0x1808);
static_assert(sizeof(C_DOTA_BaseNPC_Warlock_Golem) == 0x1810);
};

View File

@ -15,7 +15,7 @@ namespace source2sdk::client
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: false
// Size: 0x1888
// Size: 0x1890
// Has VTable
// Construct allowed
// MClassHasEntityLimitedDataDesc
@ -27,15 +27,15 @@ namespace source2sdk::client
class C_DOTA_BaseNPC_Watch_Tower : public client::C_DOTA_BaseNPC_Building
{
public:
client::ParticleIndex_t m_iRangeFX; // 0x1870
[[maybe_unused]] std::uint8_t pad_0x1874[0x4]; // 0x1874
client::ParticleIndex_t m_iRangeFX; // 0x1878
[[maybe_unused]] std::uint8_t pad_0x187c[0x4]; // 0x187c
// metadata: MNetworkEnable
CUtlSymbolLarge m_szOutpostName; // 0x1878
CUtlSymbolLarge m_szOutpostName; // 0x1880
// metadata: MNetworkEnable
CUtlSymbolLarge m_szInteractAbilityName; // 0x1880
CUtlSymbolLarge m_szInteractAbilityName; // 0x1888
};
#pragma pack(pop)
// Cannot assert offsets of fields in C_DOTA_BaseNPC_Watch_Tower because it is not a standard-layout class
static_assert(sizeof(C_DOTA_BaseNPC_Watch_Tower) == 0x1888);
static_assert(sizeof(C_DOTA_BaseNPC_Watch_Tower) == 0x1890);
};

View File

@ -14,7 +14,7 @@ namespace source2sdk::client
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: false
// Size: 0x1800
// Size: 0x1808
// Has VTable
// Construct allowed
// MClassHasEntityLimitedDataDesc
@ -27,5 +27,5 @@ namespace source2sdk::client
};
#pragma pack(pop)
static_assert(sizeof(C_DOTA_DarkWillow_Creature) == 0x1800);
static_assert(sizeof(C_DOTA_DarkWillow_Creature) == 0x1808);
};

View File

@ -14,7 +14,7 @@ namespace source2sdk::client
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: false
// Size: 0x1800
// Size: 0x1808
// Has VTable
// Construct allowed
// MClassHasEntityLimitedDataDesc
@ -27,5 +27,5 @@ namespace source2sdk::client
};
#pragma pack(pop)
static_assert(sizeof(C_DOTA_NPC_BaseBlocker) == 0x1800);
static_assert(sizeof(C_DOTA_NPC_BaseBlocker) == 0x1808);
};

View File

@ -14,7 +14,7 @@ namespace source2sdk::client
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: false
// Size: 0x1800
// Size: 0x1808
// Has VTable
// Construct allowed
// MClassHasEntityLimitedDataDesc
@ -27,5 +27,5 @@ namespace source2sdk::client
};
#pragma pack(pop)
static_assert(sizeof(C_DOTA_NPC_BroodmotherStickyWeb) == 0x1800);
static_assert(sizeof(C_DOTA_NPC_BroodmotherStickyWeb) == 0x1808);
};

View File

@ -14,7 +14,7 @@ namespace source2sdk::client
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: false
// Size: 0x1800
// Size: 0x1808
// Has VTable
// Construct allowed
// MClassHasEntityLimitedDataDesc
@ -27,5 +27,5 @@ namespace source2sdk::client
};
#pragma pack(pop)
static_assert(sizeof(C_DOTA_NPC_DataDriven) == 0x1800);
static_assert(sizeof(C_DOTA_NPC_DataDriven) == 0x1808);
};

View File

@ -20,7 +20,7 @@ namespace source2sdk::client
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: false
// Size: 0x1890
// Size: 0x1898
// Has VTable
// Construct allowed
// MClassHasEntityLimitedDataDesc
@ -32,15 +32,15 @@ namespace source2sdk::client
{
public:
// metadata: MNetworkEnable
CUtlSymbolLarge m_szInteractAbilityName; // 0x1870
particleslib::CNewParticleEffect* m_pVisionRangeFX; // 0x1878
client::ParticleIndex_t m_iFxIndex; // 0x1880
int32_t m_nPreviewViewer; // 0x1884
int32_t m_nTeamNumberShown; // 0x1888
[[maybe_unused]] std::uint8_t pad_0x188c[0x4];
CUtlSymbolLarge m_szInteractAbilityName; // 0x1878
particleslib::CNewParticleEffect* m_pVisionRangeFX; // 0x1880
client::ParticleIndex_t m_iFxIndex; // 0x1888
int32_t m_nPreviewViewer; // 0x188c
int32_t m_nTeamNumberShown; // 0x1890
[[maybe_unused]] std::uint8_t pad_0x1894[0x4];
};
#pragma pack(pop)
// Cannot assert offsets of fields in C_DOTA_NPC_Lantern because it is not a standard-layout class
static_assert(sizeof(C_DOTA_NPC_Lantern) == 0x1890);
static_assert(sizeof(C_DOTA_NPC_Lantern) == 0x1898);
};

View File

@ -14,7 +14,7 @@ namespace source2sdk::client
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: false
// Size: 0x1800
// Size: 0x1808
// Has VTable
// Construct allowed
// MClassHasEntityLimitedDataDesc
@ -27,5 +27,5 @@ namespace source2sdk::client
};
#pragma pack(pop)
static_assert(sizeof(C_DOTA_NPC_Lich_Ice_Spire) == 0x1800);
static_assert(sizeof(C_DOTA_NPC_Lich_Ice_Spire) == 0x1808);
};

View File

@ -15,7 +15,7 @@ namespace source2sdk::client
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: false
// Size: 0x1808
// Size: 0x1810
// Has VTable
// Construct allowed
// MClassHasEntityLimitedDataDesc
@ -24,11 +24,11 @@ namespace source2sdk::client
class C_DOTA_NPC_TechiesMines : public client::C_DOTA_BaseNPC_Additive
{
public:
client::ParticleIndex_t m_iRangeFX; // 0x1800
[[maybe_unused]] std::uint8_t pad_0x1804[0x4];
client::ParticleIndex_t m_iRangeFX; // 0x1808
[[maybe_unused]] std::uint8_t pad_0x180c[0x4];
};
#pragma pack(pop)
// Cannot assert offsets of fields in C_DOTA_NPC_TechiesMines because it is not a standard-layout class
static_assert(sizeof(C_DOTA_NPC_TechiesMines) == 0x1808);
static_assert(sizeof(C_DOTA_NPC_TechiesMines) == 0x1810);
};

View File

@ -14,7 +14,7 @@ namespace source2sdk::client
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: false
// Size: 0x1800
// Size: 0x1808
// Has VTable
// Construct allowed
// MClassHasEntityLimitedDataDesc
@ -27,5 +27,5 @@ namespace source2sdk::client
};
#pragma pack(pop)
static_assert(sizeof(C_DOTA_NPC_Techies_Minefield_Sign) == 0x1800);
static_assert(sizeof(C_DOTA_NPC_Techies_Minefield_Sign) == 0x1808);
};

View File

@ -14,7 +14,7 @@ namespace source2sdk::client
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: false
// Size: 0x1800
// Size: 0x1808
// Has VTable
// Construct allowed
// MClassHasEntityLimitedDataDesc
@ -27,5 +27,5 @@ namespace source2sdk::client
};
#pragma pack(pop)
static_assert(sizeof(C_DOTA_NPC_Treant_EyesInTheForest) == 0x1800);
static_assert(sizeof(C_DOTA_NPC_Treant_EyesInTheForest) == 0x1808);
};

View File

@ -15,7 +15,7 @@ namespace source2sdk::client
// Registered alignment: 0x8
// Alignment: 0x8
// Standard-layout class: false
// Size: 0x1810
// Size: 0x1818
// Has VTable
// Construct allowed
// MClassHasEntityLimitedDataDesc
@ -27,15 +27,15 @@ namespace source2sdk::client
class C_DOTA_NPC_WitchDoctor_Ward : public client::C_DOTA_BaseNPC_Additive
{
public:
client::ParticleIndex_t m_nFXSkullIndex; // 0x1800
client::ParticleIndex_t m_nFXSkullIndex; // 0x1808
// metadata: MNetworkEnable
int32_t m_nTargetType; // 0x1804
int32_t m_nTargetType; // 0x180c
// metadata: MNetworkEnable
int32_t m_nTargetFlags; // 0x1808
[[maybe_unused]] std::uint8_t pad_0x180c[0x4];
int32_t m_nTargetFlags; // 0x1810
[[maybe_unused]] std::uint8_t pad_0x1814[0x4];
};
#pragma pack(pop)
// Cannot assert offsets of fields in C_DOTA_NPC_WitchDoctor_Ward because it is not a standard-layout class
static_assert(sizeof(C_DOTA_NPC_WitchDoctor_Ward) == 0x1810);
static_assert(sizeof(C_DOTA_NPC_WitchDoctor_Ward) == 0x1818);
};

Some files were not shown because too many files have changed in this diff Show More