CGameRules::RadiusDamage
0x0045fc80 · 4657 bytes · __thiscall
_ZN10CGameRules12RadiusDamageERK15CTakeDamageInfoRK6VectorfiP11CBaseEntity
Decompiled
undefined (6 params)
/* CGameRules::RadiusDamage(CTakeDamageInfo const&, Vector const&, float, int, CBaseEntity*) */
void __thiscall
CGameRules::RadiusDamage
(CGameRules *this,CTakeDamageInfo *param_1,Vector *param_2,float param_3,int param_4,
CBaseEntity *param_5)
{
uint uVar1;
int *piVar2;
int *piVar3;
CBaseEntity *pCVar4;
float fVar5;
float fVar6;
float fVar7;
char cVar8;
uint uVar9;
CBaseEntity *pCVar10;
int iVar11;
char *pcVar12;
undefined *puVar13;
code *pcVar14;
int *piVar15;
longdouble lVar16;
float fVar17;
float fVar18;
float fVar19;
int aiStackY_974 [2];
int local_95c;
float local_958 [4];
int local_948;
int local_93c;
float local_938;
int local_934;
int local_928;
float local_914;
float local_910;
float local_90c;
float local_908;
float local_904;
float local_900;
float local_8fc;
float local_8f8;
float local_8f4;
float local_8f0;
float local_8ec;
float local_8e8;
undefined1 local_8e0 [12];
float local_8d4;
float local_8d0;
float local_8cc;
float local_8c8;
float local_8c4;
float local_8c0;
float local_8b4;
char local_8a9;
CBaseEntity *local_894;
float local_88c;
float local_888;
float local_884;
float local_880;
float local_87c;
float local_878;
float local_874;
undefined4 local_870;
undefined4 local_86c;
undefined4 local_868;
undefined4 local_864;
undefined4 local_860;
undefined4 local_85c;
uint local_858;
undefined4 local_854;
float local_850;
undefined4 local_84c;
undefined4 local_848;
uint local_844;
undefined4 local_840;
undefined4 local_83c;
undefined4 local_838;
float local_834;
int local_830;
int local_824 [517];
local_914 = *(float *)param_2;
local_910 = *(float *)(param_2 + 4);
local_90c = *(float *)(param_2 + 8);
if (param_3 == 0.0) {
local_938 = 1.0;
}
else {
local_938 = *(float *)(param_1 + 0x3c) / param_3;
}
uVar9 = (**(code **)*enginetrace)();
local_90c = local_90c + 1.0;
CEntitySphereQuery::CEntitySphereQuery
((CEntitySphereQuery *)local_824,(Vector *)&local_914,param_3,0);
local_934 = 0;
pCVar10 = (CBaseEntity *)CEntitySphereQuery::GetCurrentEntity((CEntitySphereQuery *)local_824);
piVar3 = (int *)&stack0xfffff694;
do {
if (pCVar10 == (CBaseEntity *)0x0) {
return;
}
piVar15 = piVar3;
if ((pCVar10 != param_5) && (pCVar10[0x105] != (CBaseEntity)0x0)) {
if (param_4 != 0) {
iVar11 = *(int *)pCVar10;
*piVar3 = (int)pCVar10;
pcVar14 = *(code **)(iVar11 + 0x100);
piVar3[-1] = 0x460533;
iVar11 = (*pcVar14)();
if (iVar11 == param_4) goto LAB_00460507;
}
if ((uVar9 & 0x4030) == 0) {
if (pCVar10[0x253] != (CBaseEntity)0x3) goto LAB_0045fdcc;
}
else if (pCVar10[0x253] != (CBaseEntity)0x0) {
LAB_0045fdcc:
iVar11 = *(int *)pCVar10;
piVar3[3] = 0;
piVar3[2] = (int)&local_914;
*piVar3 = (int)&local_88c;
piVar3[1] = (int)pCVar10;
pcVar14 = *(code **)(iVar11 + 0x244);
piVar3[-1] = 0x45fdf3;
(*pcVar14)();
fVar7 = local_884;
fVar6 = local_888;
fVar5 = local_88c;
uVar1 = *(uint *)(param_1 + 0x30);
local_93c = 0;
if (((uVar1 != 0xffffffff) &&
(puVar13 = g_pEntityList + (uVar1 & 0xfff) * 0x10, puVar13 != (undefined *)0xfffffffc))
&& (*(uint *)(puVar13 + 8) == uVar1 >> 0xc)) {
local_93c = *(int *)(puVar13 + 4);
}
piVar3[2] = 0;
piVar3[1] = 0;
local_88c = local_914;
local_884 = local_90c;
local_87c = fVar5 - local_914;
local_854 = 0;
local_874 = fVar7 - local_90c;
local_858 = 0;
local_888 = local_910;
local_878 = fVar6 - local_910;
local_85c = 0;
*piVar3 = local_93c;
piVar3[-1] = (int)&local_8f0;
local_84c = 0;
local_864 = 0;
local_868 = 0;
local_86c = 0;
local_848._0_2_ =
CONCAT11(local_87c * local_87c + local_874 * local_874 + local_878 * local_878 != 0.0,1
);
piVar3[-2] = 0x45ff6a;
CTraceFilterSimple::CTraceFilterSimple
((CTraceFilterSimple *)piVar3[-1],(IHandleEntity *)*piVar3,piVar3[1],
(_func_bool_IHandleEntity_ptr_int *)piVar3[2]);
iVar11 = *enginetrace;
piVar3[3] = (int)local_8e0;
piVar3[2] = (int)&local_8f0;
piVar3[-1] = (int)enginetrace;
piVar3[1] = 0x6004003;
*piVar3 = (int)&local_88c;
pcVar14 = *(code **)(iVar11 + 0x14);
piVar3[-2] = 0x45ff9d;
(*pcVar14)();
if (*(int *)(r_visualizetraces._28_4_ + 0x30) != 0) {
piVar3[5] = -0x40800000;
*piVar3 = (int)&local_8d4;
piVar3[4] = 1;
piVar3[3] = 0;
piVar3[2] = 0;
piVar3[1] = 0xff;
piVar3[-1] = (int)local_8e0;
piVar3[-2] = 0x45ffe9;
DebugDrawLine((Vector *)piVar3[-1],(Vector *)*piVar3,piVar3[1],piVar3[2],piVar3[3],
SUB41(piVar3[4],0),(float)piVar3[5]);
}
if (*(int *)(old_radius_damage._28_4_ + 0x30) == 0) {
if (local_8b4 == 1.0) {
LAB_0046000e:
fVar19 = 0.0;
}
else {
piVar3[-1] = (int)local_8e0;
piVar3[-2] = 0x4605e1;
cVar8 = IsExplosionTraceBlocked((CGameTrace *)piVar3[-1]);
if (cVar8 != '\0') {
iVar11 = *(int *)this;
*piVar3 = (int)pCVar10;
piVar3[-1] = (int)this;
pcVar14 = *(code **)(iVar11 + 0x100);
piVar3[-2] = 0x460927;
cVar8 = (*pcVar14)();
piVar15 = piVar3 + -1;
if ((cVar8 == '\0') ||
(piVar15 = piVar3 + -1,
param_3 * 0.5 * param_3 * 0.5 <
(fVar6 - local_910) * (fVar6 - local_910) +
(fVar5 - local_914) * (fVar5 - local_914) +
(fVar7 - local_90c) * (fVar7 - local_90c))) goto LAB_00460507;
piVar3[-1] = (int)&local_908;
local_908 = fVar5 - local_8d4;
local_904 = fVar6 - local_8d0;
local_900 = fVar7 - local_8cc;
piVar3[-2] = 0x4609d6;
VectorNormalize((Vector *)piVar3[-1]);
piVar3[-1] = (int)&local_8fc;
fVar19 = local_8c0 * local_904 - local_8c4 * local_900;
fVar18 = local_908 * local_8c4 - local_904 * local_8c8;
fVar17 = local_900 * local_8c8 - local_908 * local_8c0;
local_8fc = fVar18 * local_8c4 - fVar17 * local_8c0;
local_8f8 = local_8c0 * fVar19 - fVar18 * local_8c8;
local_8f4 = local_8c8 * fVar17 - local_8c4 * fVar19;
piVar3[-2] = 0x460a85;
VectorNormalize((Vector *)piVar3[-1]);
local_93c = 0;
uVar1 = *(uint *)(param_1 + 0x30);
if ((uVar1 != 0xffffffff) &&
((puVar13 = g_pEntityList + (uVar1 & 0xfff) * 0x10,
puVar13 != (undefined *)0xfffffffc && (*(uint *)(puVar13 + 8) == uVar1 >> 0xc))))
{
local_93c = *(int *)(puVar13 + 4);
}
piVar3[2] = 0;
piVar3[1] = 0;
local_854 = 0;
local_87c = local_8fc * 16.0;
local_858 = 0;
local_878 = local_8f8 * 16.0;
local_85c = 0;
local_874 = local_8f4 * 16.0;
local_84c = 0;
*piVar3 = local_93c;
piVar3[-1] = (int)&local_8f0;
local_864 = 0;
local_868 = 0;
local_86c = 0;
local_88c = local_8d4;
local_848._0_2_ =
CONCAT11(local_878 * local_878 + local_87c * local_87c + local_874 * local_874 !=
0.0,1);
local_888 = local_8d0;
local_884 = local_8cc;
piVar3[-2] = 0x460bc6;
CTraceFilterSimple::CTraceFilterSimple
((CTraceFilterSimple *)piVar3[-1],(IHandleEntity *)*piVar3,piVar3[1],
(_func_bool_IHandleEntity_ptr_int *)piVar3[2]);
iVar11 = *enginetrace;
piVar3[3] = (int)local_8e0;
piVar3[2] = (int)&local_8f0;
piVar3[-1] = (int)enginetrace;
piVar3[1] = 0x6004003;
*piVar3 = (int)&local_88c;
pcVar14 = *(code **)(iVar11 + 0x14);
piVar3[-2] = 0x460bf9;
(*pcVar14)();
if (*(int *)(r_visualizetraces._28_4_ + 0x30) != 0) {
piVar3[5] = -0x40800000;
*piVar3 = (int)&local_8d4;
piVar3[4] = 1;
piVar3[3] = 0;
piVar3[2] = 0;
piVar3[1] = 0xff;
piVar3[-1] = (int)local_8e0;
piVar3[-2] = 0x460c45;
DebugDrawLine((Vector *)piVar3[-1],(Vector *)*piVar3,piVar3[1],piVar3[2],piVar3[3],
SUB41(piVar3[4],0),(float)piVar3[5]);
}
local_93c = 0;
uVar1 = *(uint *)(param_1 + 0x30);
if (((uVar1 != 0xffffffff) &&
(puVar13 = g_pEntityList + (uVar1 & 0xfff) * 0x10,
puVar13 != (undefined *)0xfffffffc)) && (*(uint *)(puVar13 + 8) == uVar1 >> 0xc))
{
local_93c = *(int *)(puVar13 + 4);
}
piVar3[2] = 0;
piVar3[1] = 0;
local_88c = local_8d4;
local_888 = local_8d0;
local_87c = fVar5 - local_8d4;
local_854 = 0;
local_878 = fVar6 - local_8d0;
local_858 = 0;
local_884 = local_8cc;
local_874 = fVar7 - local_8cc;
local_85c = 0;
*piVar3 = local_93c;
piVar3[-1] = (int)&local_8f0;
local_84c = 0;
local_864 = 0;
local_868 = 0;
local_86c = 0;
local_848._0_2_ =
CONCAT11(local_87c * local_87c + local_878 * local_878 + local_874 * local_874 !=
0.0,1);
piVar3[-2] = 0x460d80;
CTraceFilterSimple::CTraceFilterSimple
((CTraceFilterSimple *)piVar3[-1],(IHandleEntity *)*piVar3,piVar3[1],
(_func_bool_IHandleEntity_ptr_int *)piVar3[2]);
iVar11 = *enginetrace;
piVar3[3] = (int)local_8e0;
piVar3[2] = (int)&local_8f0;
*piVar3 = (int)&local_88c;
piVar3[-1] = (int)enginetrace;
piVar3[1] = 0x6004003;
pcVar14 = *(code **)(iVar11 + 0x14);
piVar3[-2] = 0x460db3;
(*pcVar14)();
if (*(int *)(r_visualizetraces._28_4_ + 0x30) != 0) {
piVar3[5] = -0x40800000;
*piVar3 = (int)&local_8d4;
piVar3[4] = 1;
piVar3[3] = 0;
piVar3[2] = 0;
piVar3[1] = 0xff;
piVar3[-1] = (int)local_8e0;
piVar3[-2] = 0x460dff;
DebugDrawLine((Vector *)piVar3[-1],(Vector *)*piVar3,piVar3[1],piVar3[2],piVar3[3],
SUB41(piVar3[4],0),(float)piVar3[5]);
}
if (local_8b4 != 1.0) {
piVar3[-1] = (int)local_8e0;
piVar3[-2] = 0x460e22;
cVar8 = CGameTrace::DidHitWorld((CGameTrace *)piVar3[-1]);
piVar15 = piVar3 + -1;
if (cVar8 != '\0') goto LAB_00460507;
}
}
pCVar4 = local_894;
if (((local_894 == (CBaseEntity *)0x0) || (pCVar10 == local_894)) ||
(((uVar1 = *(uint *)(local_894 + 0x220), uVar1 != 0xffffffff &&
((puVar13 = g_pEntityList + (uVar1 & 0xfff) * 0x10,
puVar13 != (undefined *)0xfffffffc && (*(uint *)(puVar13 + 8) == uVar1 >> 0xc))))
&& (pCVar10 == *(CBaseEntity **)(puVar13 + 4))))) goto LAB_0046000e;
local_948 = 0;
uVar1 = *(uint *)(param_1 + 0x30);
if (((uVar1 != 0xffffffff) &&
(puVar13 = g_pEntityList + (uVar1 & 0xfff) * 0x10,
puVar13 != (undefined *)0xfffffffc)) && (*(uint *)(puVar13 + 8) == uVar1 >> 0xc)) {
local_948 = *(int *)(puVar13 + 4);
}
piVar3[2] = 0;
piVar3[1] = 0;
local_88c = local_914;
local_87c = fVar5 - local_914;
local_884 = local_90c;
local_874 = fVar7 - local_90c;
local_854 = 0;
local_888 = local_910;
local_878 = fVar6 - local_910;
local_858 = 0;
*piVar3 = local_948;
piVar3[-1] = (int)&local_8f0;
local_85c = 0;
local_84c = 0;
local_864 = 0;
local_868 = 0;
local_86c = 0;
local_848._0_2_ =
CONCAT11(local_87c * local_87c + local_874 * local_874 + local_878 * local_878 !=
0.0,1);
piVar3[-2] = 0x4607a5;
CTraceFilterSimple::CTraceFilterSimple
((CTraceFilterSimple *)piVar3[-1],(IHandleEntity *)*piVar3,piVar3[1],
(_func_bool_IHandleEntity_ptr_int *)piVar3[2]);
iVar11 = *enginetrace;
piVar3[3] = (int)local_8e0;
piVar3[2] = (int)&local_8f0;
*piVar3 = (int)&local_88c;
piVar3[-1] = (int)enginetrace;
piVar3[1] = 1;
pcVar14 = *(code **)(iVar11 + 0x14);
piVar3[-2] = 0x4607d8;
(*pcVar14)();
if (*(int *)(r_visualizetraces._28_4_ + 0x30) != 0) {
piVar3[5] = -0x40800000;
*piVar3 = (int)&local_8d4;
piVar3[4] = 1;
piVar3[3] = 0;
piVar3[2] = 0;
piVar3[1] = 0xff;
piVar3[-1] = (int)local_8e0;
piVar3[-2] = 0x46082a;
DebugDrawLine((Vector *)piVar3[-1],(Vector *)*piVar3,piVar3[1],piVar3[2],piVar3[3],
SUB41(piVar3[4],0),(float)piVar3[5]);
}
piVar15 = piVar3 + -1;
if (local_8b4 != 1.0) goto LAB_00460507;
piVar15 = *(int **)(pCVar4 + 0x238);
if (piVar15 == (int *)0x0) {
fVar19 = 0.25;
}
else {
iVar11 = *piVar15;
piVar3[-1] = (int)piVar15;
pcVar14 = *(code **)(iVar11 + 0x78);
piVar3[-2] = 0x46085b;
lVar16 = (longdouble)(*pcVar14)();
fVar19 = (float)lVar16 * 0.0028571428;
piVar15 = piVar3 + -1;
if (1.0 <= fVar19) goto LAB_00460507;
}
}
fVar17 = *(float *)(param_1 + 0x3c) -
SQRT((local_910 - local_8d0) * (local_910 - local_8d0) +
(local_914 - local_8d4) * (local_914 - local_8d4) +
(local_90c - local_8cc) * (local_90c - local_8cc)) * local_938;
piVar15 = piVar3 + -1;
if (0.0 < fVar17) {
if (local_8a9 != '\0') {
local_8d4 = local_914;
local_8d0 = local_910;
local_8cc = local_90c;
local_8b4 = 0.0;
}
local_88c = *(float *)param_1;
local_854 = *(undefined4 *)(param_1 + 0x38);
local_84c = *(undefined4 *)(param_1 + 0x40);
local_888 = *(float *)(param_1 + 4);
local_848 = *(undefined4 *)(param_1 + 0x44);
local_884 = *(float *)(param_1 + 8);
local_880 = *(float *)(param_1 + 0xc);
local_87c = *(float *)(param_1 + 0x10);
local_878 = *(float *)(param_1 + 0x14);
local_874 = *(float *)(param_1 + 0x18);
local_870 = *(undefined4 *)(param_1 + 0x1c);
local_86c = *(undefined4 *)(param_1 + 0x20);
local_868 = *(undefined4 *)(param_1 + 0x24);
local_864 = *(undefined4 *)(param_1 + 0x28);
local_860 = *(undefined4 *)(param_1 + 0x2c);
local_85c = *(undefined4 *)(param_1 + 0x30);
local_858 = *(uint *)(param_1 + 0x34);
local_844 = *(uint *)(param_1 + 0x48);
local_840 = *(undefined4 *)(param_1 + 0x4c);
local_834 = param_3;
local_850 = (1.0 - fVar19) * fVar17;
local_83c = *(undefined4 *)(param_1 + 0x50);
local_838 = *(undefined4 *)(param_1 + 0x54);
local_830 = *(int *)(param_1 + 0x5c);
if (((local_858 != 0xffffffff) &&
(puVar13 = g_pEntityList + (local_858 & 0xfff) * 0x10,
puVar13 != (undefined *)0xfffffffc)) &&
((*(uint *)(puVar13 + 8) == local_858 >> 0xc &&
(piVar15 = *(int **)(puVar13 + 4), piVar15 != (int *)0x0)))) {
iVar11 = *piVar15;
piVar3[-1] = (int)piVar15;
pcVar14 = *(code **)(iVar11 + 0x16c);
piVar3[-2] = 0x4608b7;
cVar8 = (*pcVar14)();
if (cVar8 != '\0') {
iVar11 = *(int *)pCVar10;
piVar3[-1] = (int)pCVar10;
pcVar14 = *(code **)(iVar11 + 0x140);
piVar3[-2] = 0x4608e3;
cVar8 = (*pcVar14)();
if (cVar8 != '\0') {
piVar3[-1] = (int)&local_88c;
piVar3[-2] = 0x4608f5;
CTakeDamageInfo::AdjustPlayerDamageInflictedForSkillLevel
((CTakeDamageInfo *)piVar3[-1]);
}
}
}
piVar3[-1] = (int)&local_8f0;
local_8f0 = fVar5 - local_914;
local_8ec = fVar6 - local_910;
local_8e8 = fVar7 - local_90c;
piVar3[-2] = 0x460221;
VectorNormalize((Vector *)piVar3[-1]);
if ((((vec3_origin == local_880) && (local_87c == DAT_01053d4c)) &&
(local_878 == DAT_01053d50)) ||
(((vec3_origin == local_88c && (local_888 == DAT_01053d4c)) &&
(local_884 == DAT_01053d50)))) {
if ((local_844 & 0x800) == 0) {
piVar3[2] = 0x3f800000;
piVar3[1] = (int)&local_914;
*piVar3 = (int)&local_8f0;
piVar3[-1] = (int)&local_88c;
piVar3[-2] = 0x46028d;
CalculateExplosiveDamageForce
((CTakeDamageInfo *)piVar3[-1],(Vector *)*piVar3,(Vector *)piVar3[1],
(float)piVar3[2]);
}
}
else {
local_88c = SQRT(local_888 * local_888 + local_88c * local_88c + local_884 * local_884
) * local_938;
local_888 = local_8ec * local_88c;
local_884 = local_8e8 * local_88c;
local_88c = local_88c * local_8f0;
local_880 = local_914;
local_87c = local_910;
local_878 = local_90c;
}
iVar11 = local_934 + 1;
local_830 = local_934;
if ((local_8b4 == 1.0) || (pCVar10 != local_894)) {
piVar3[-1] = (int)pCVar10;
*piVar3 = (int)&local_88c;
piVar3[-2] = 0x46039f;
CBaseEntity::TakeDamage((CBaseEntity *)piVar3[-1],(CTakeDamageInfo *)*piVar3);
}
else {
piVar3[-2] = 0x460e5e;
ClearMultiDamage();
piVar3[-1] = (int)pCVar10;
piVar3[2] = (int)local_8e0;
piVar3[1] = (int)&local_8f0;
*piVar3 = (int)&local_88c;
piVar3[-2] = 0x460e84;
CBaseEntity::DispatchTraceAttack
((CTakeDamageInfo *)piVar3[-1],(Vector *)*piVar3,(CGameTrace *)piVar3[1]);
piVar3[-2] = 0x460e89;
ApplyMultiDamage();
}
piVar3[-1] = (int)pCVar10;
piVar3[3] = (int)&local_8f0;
piVar3[2] = (int)&local_8d4;
piVar3[1] = (int)&local_914;
*piVar3 = (int)&local_88c;
piVar3[-2] = 0x4603cf;
CBaseEntity::TraceAttackToTriggers
((CBaseEntity *)piVar3[-1],(CTakeDamageInfo *)*piVar3,(Vector *)piVar3[1],
(Vector *)piVar3[2],(Vector *)piVar3[3]);
uVar1 = *(uint *)(param_1 + 0x34);
piVar15 = piVar3 + -1;
local_934 = iVar11;
if (((uVar1 != 0xffffffff) &&
(puVar13 = g_pEntityList + (uVar1 & 0xfff) * 0x10, piVar15 = piVar3 + -1,
puVar13 != (undefined *)0xfffffffc)) &&
((piVar15 = piVar3 + -1, *(uint *)(puVar13 + 8) == uVar1 >> 0xc &&
(piVar2 = *(int **)(puVar13 + 4), piVar15 = piVar3 + -1, piVar2 != (int *)0x0)))) {
iVar11 = *piVar2;
piVar3[-1] = (int)piVar2;
pcVar14 = *(code **)(iVar11 + 0x16c);
piVar3[-2] = 0x46041b;
cVar8 = (*pcVar14)();
piVar15 = piVar3 + -1;
if ((cVar8 != '\0') && (piVar15 = piVar3 + -1, local_894 != (CBaseEntity *)0x0)) {
iVar11 = *(int *)local_894;
piVar3[-1] = (int)local_894;
pcVar14 = *(code **)(iVar11 + 0x144);
piVar3[-2] = 0x46043c;
iVar11 = (*pcVar14)();
piVar15 = piVar3 + -1;
if (iVar11 != 0) {
uVar1 = *(uint *)(param_1 + 0x34);
if ((((uVar1 == 0xffffffff) ||
(puVar13 = g_pEntityList + (uVar1 & 0xfff) * 0x10,
puVar13 == (undefined *)0xfffffffc)) ||
(*(uint *)(puVar13 + 8) != uVar1 >> 0xc)) ||
(piVar15 = *(int **)(puVar13 + 4), piVar15 == (int *)0x0)) {
LAB_00460471:
piVar15 = (int *)0x0;
}
else {
iVar11 = *piVar15;
piVar3[-1] = (int)piVar15;
pcVar14 = *(code **)(iVar11 + 0x16c);
piVar3[-2] = 0x4605c6;
cVar8 = (*pcVar14)();
if (cVar8 == '\0') goto LAB_00460471;
}
piVar3[-1] = (int)piVar15;
piVar3[-2] = 0x46047b;
iVar11 = CBaseCombatCharacter::GetActiveWeapon((CBaseCombatCharacter *)piVar3[-1])
;
if (iVar11 == 0) {
local_928 = 1;
pcVar14 = *(code **)(*(int *)gamestats + 0x78);
pcVar12 = "NULL";
}
else {
if (*(char **)(iVar11 + 0x7c) == "weapon_smg1") {
LAB_00460888:
local_928 = 0;
pcVar14 = *(code **)(*(int *)gamestats + 0x78);
}
else {
*piVar3 = (int)"weapon_smg1";
piVar3[-1] = iVar11;
piVar3[-2] = 0x4604a0;
cVar8 = CBaseEntity::ClassMatchesComplex
((CBaseEntity *)piVar3[-1],(char *)*piVar3);
if (cVar8 != '\0') goto LAB_00460888;
local_928 = 1;
pcVar14 = *(code **)(*(int *)gamestats + 0x78);
}
piVar3[-1] = (int)piVar15;
piVar3[-2] = 0x4604ca;
iVar11 = CBaseCombatCharacter::GetActiveWeapon
((CBaseCombatCharacter *)piVar3[-1]);
pcVar12 = *(char **)(iVar11 + 0x7c);
if (pcVar12 == (char *)0x0) {
pcVar12 = "";
}
}
piVar3[2] = (int)pcVar12;
piVar3[3] = (int)param_1;
*piVar3 = (int)piVar15;
piVar3[-1] = (int)gamestats;
piVar3[1] = local_928;
piVar3[-2] = 0x4604fc;
(*pcVar14)();
piVar15 = piVar3 + -1;
}
}
}
}
}
else if ((local_8b4 == 1.0) || (piVar15 = piVar3 + -1, pCVar10 == local_894))
goto LAB_0046000e;
}
}
LAB_00460507:
local_824[0] = local_824[0] + 1;
*piVar15 = (int)local_824;
piVar15[-1] = 0x46050f;
pCVar10 = (CBaseEntity *)CEntitySphereQuery::GetCurrentEntity((CEntitySphereQuery *)*piVar15);
piVar3 = piVar15;
} while( true );
}
SourceMod gamedata
paste intoaddons/sourcemod/gamedata/<your_plugin>.txt
used as the SourceMod key — change to fit your plugin's convention
SourceMod library name (server / engine / matchmaking)
Just a Signatures{} block, ready to drop into a gamedata
file. Wire it up in your plugin however you like - SDKCall, DHooks,
raw memory ops, or anything else.
Signatures + Functions block. The plugin uses
DHookCreateFromConf - DHooks reads return type, this-type,
calling convention, and argument types straight from the gamedata. Less
boilerplate in the plugin, types travel with the gamedata.
Gamedata KeyValues
DHooks plugin example
Type inference is best-effort from the C signature - sanity-check the DHooks types before shipping.