CTankClaw::SweepFist
0x0055eb10 · 3708 bytes · __thiscall
_ZN9CTankClaw9SweepFistERK6VectorS2_
Decompiled
undefined (3 params)
/* CTankClaw::SweepFist(Vector const&, Vector const&) */
void __thiscall CTankClaw::SweepFist(CTankClaw *this,Vector *param_1,Vector *param_2)
{
float fVar1;
float fVar2;
CTankClaw CVar3;
code *pcVar4;
int *piVar5;
char cVar6;
char cVar7;
char cVar8;
IHandleEntity *pIVar9;
int iVar10;
float *pfVar11;
uint uVar12;
int *piVar13;
int iVar14;
int *piVar15;
Vector *pVVar16;
int *piVar17;
int local_268;
float local_218;
float local_214;
float local_210;
float local_20c;
float local_208;
float local_204;
undefined **local_200 [4];
undefined4 local_1f0 [3];
undefined4 local_1e4;
undefined4 local_1e0;
float local_1dc;
float local_1d8;
float local_1d4;
float local_1cc;
float local_1c8;
float local_1c4;
float local_1bc;
float local_1b8;
float local_1b4;
float local_1ac;
float local_1a8;
float local_1a4;
undefined4 local_19c;
undefined1 local_198;
undefined1 local_197;
float local_18c;
float local_188;
float local_184;
float local_17c;
float local_178;
float local_174;
undefined4 local_16c;
undefined4 local_168;
undefined4 local_164;
undefined4 local_15c;
undefined4 local_158;
undefined4 local_154;
undefined4 local_14c;
undefined1 local_148;
undefined1 local_147;
Vector local_130 [12];
float local_124;
float local_120;
float local_11c;
char local_fa;
char local_f9;
int *local_e4;
float local_dc;
float local_d8;
float local_d4;
float local_d0;
float local_cc;
float local_c8;
float local_c4;
undefined4 local_bc;
undefined4 local_b8;
undefined4 local_b4;
undefined4 local_ac;
undefined4 local_a8;
undefined4 local_a4;
undefined4 local_9c;
undefined1 local_98;
undefined1 local_97;
int *local_90;
float local_7c;
float local_78;
float local_74;
Vector local_70 [4];
float local_6c;
float local_68;
float local_64;
float local_5c;
float local_58;
float local_54;
float local_4c;
float local_48;
float local_44;
undefined4 local_3c;
undefined1 local_38;
undefined1 local_37;
piVar17 = (int *)&stack0xfffffda4;
pIVar9 = (IHandleEntity *)CTerrorWeapon::GetPlayerOwner((CTerrorWeapon *)this);
if (pIVar9 == (IHandleEntity *)0x0) {
return;
}
(**(code **)*lagcompensation)();
local_20c = *(float *)(HulkFistRadius._28_4_ + 0x2c);
local_218 = -local_20c;
local_214 = local_218;
local_210 = local_218;
local_208 = local_20c;
local_204 = local_20c;
CTraceFilterSimpleList::CTraceFilterSimpleList((CTraceFilterSimpleList *)local_200,0);
local_200[0] = &PTR_ShouldHitEntity_00c2e780;
/* try { // try from 0055ebd8 to 0055f53d has its CatchHandler @ 0055f9d9 */
CTraceFilterSimpleList::AddEntityToIgnore((CTraceFilterSimpleList *)local_200,pIVar9);
local_19c = 0;
local_1cc = *(float *)param_2 - *(float *)param_1;
local_1c8 = *(float *)(param_2 + 4) - *(float *)(param_1 + 4);
local_1c4 = *(float *)(param_2 + 8) - *(float *)(param_1 + 8);
local_197 = local_1cc * local_1cc + local_1c8 * local_1c8 + local_1c4 * local_1c4 != 0.0;
local_1b8 = (local_208 + local_214) * 0.5;
local_1a8 = (local_208 - local_214) * 0.5;
local_1ac = (local_20c - local_218) * 0.5;
local_1d8 = *(float *)(param_1 + 4) + local_1b8;
local_1a4 = (local_204 - local_210) * 0.5;
local_1bc = (local_20c + local_218) * 0.5;
local_1b4 = (local_204 + local_210) * 0.5;
local_1d4 = *(float *)(param_1 + 8) + local_1b4;
local_198 = local_1a8 * local_1a8 + local_1ac * local_1ac + local_1a4 * local_1a4 < 1e-06;
local_1dc = *(float *)param_1 + local_1bc;
local_1bc = -local_1bc;
local_1b8 = -local_1b8;
local_1b4 = -local_1b4;
(**(code **)(*enginetrace + 0x14))();
if (*(int *)(r_visualizetraces._28_4_ + 0x30) != 0) {
DebugDrawLine(local_130,(Vector *)&local_124,0xff,0xff,0,true,-1.0);
}
if (*(int *)(ZombieShowSwings._28_4_ + 0x30) != 0) {
NDebugOverlay::SweptBox
(param_1,param_2,(Vector *)&local_218,(Vector *)&local_20c,(QAngle *)&vec3_angle,0xff,
0xff,0xff,0x32,10.1);
}
cVar6 = CGameTrace::DidHitNonWorldEntity((CGameTrace *)local_130);
if ((cVar6 == '\0') || (piVar13 = local_e4, local_e4 == (int *)0x0)) {
iVar10 = (**(code **)(*g_pGameRules + 0x7c))();
local_dc = *(float *)(iVar10 + 0x18) - 1.0;
local_18c = -local_dc;
local_188 = local_18c;
local_184 = local_18c;
local_d8 = local_dc;
local_d4 = local_dc;
pfVar11 = (float *)(**(code **)(*(int *)pIVar9 + 0x288))();
local_6c = *(float *)param_2 - *pfVar11;
local_68 = *(float *)(param_2 + 4) - pfVar11[1];
local_64 = *(float *)(param_2 + 8) - pfVar11[2];
local_3c = 0;
local_4c = (local_dc - local_18c) * 0.5;
local_37 = local_6c * local_6c + local_64 * local_64 + local_68 * local_68 != 0.0;
local_44 = (local_d4 - local_184) * 0.5;
local_5c = (local_dc + local_18c) * 0.5;
local_48 = (local_d8 - local_188) * 0.5;
local_58 = (local_d8 + local_188) * 0.5;
local_54 = (local_d4 + local_184) * 0.5;
local_38 = local_48 * local_48 + local_4c * local_4c + local_44 * local_44 < 1e-06;
local_7c = *pfVar11 + local_5c;
local_5c = -local_5c;
local_78 = pfVar11[1] + local_58;
local_58 = -local_58;
local_74 = pfVar11[2] + local_54;
local_54 = -local_54;
(**(code **)(*enginetrace + 0x14))();
if (*(int *)(r_visualizetraces._28_4_ + 0x30) != 0) {
DebugDrawLine(local_130,(Vector *)&local_124,0xff,0xff,0,true,-1.0);
}
if (*(int *)(ZombieShowSwings._28_4_ + 0x30) != 0) {
pVVar16 = (Vector *)(**(code **)(*(int *)pIVar9 + 0x288))();
NDebugOverlay::SweptBox
(pVVar16,param_2,(Vector *)&local_18c,(Vector *)&local_dc,(QAngle *)&vec3_angle,0xff
,0xff,0xff,0x32,10.1);
}
if (((local_fa != '\0') || (local_f9 != '\0')) ||
(cVar6 = CGameTrace::DidHitNonWorldEntity((CGameTrace *)local_130), piVar13 = local_e4,
cVar6 == '\0')) {
piVar13 = (int *)0x0;
}
}
cVar6 = CTerrorGameRules::HasPlayerControlledZombies();
if (cVar6 == '\0') {
LAB_0055f3e0:
if (piVar13 != (int *)0x0) {
iVar10 = *piVar13;
*piVar17 = (int)piVar13;
pcVar4 = *(code **)(iVar10 + 0x16c);
piVar17[-1] = 0x55f3f3;
cVar6 = (*pcVar4)();
cVar8 = '\0';
if (cVar6 != '\0') {
*piVar17 = (int)piVar13;
piVar17[-1] = 0x55f8f3;
iVar10 = CBaseEntity::GetTeamNumber((CBaseEntity *)*piVar17);
*piVar17 = iVar10;
piVar17[-1] = 0x55f8fb;
cVar8 = IsASurvivorTeam(iVar10);
}
piVar17[-1] = 0x55f402;
cVar6 = CTerrorGameRules::HasPlayerControlledZombies();
cVar7 = '\x01';
if (cVar6 == '\0') {
piVar17[-1] = 0x55f8ca;
cVar7 = CTerrorGameRules::IsSurvivalMode();
}
if (((cVar8 == '\0') || (this[0x1821] == (CTankClaw)0x0)) || (cVar7 != '\0')) {
if (((byte)pIVar9[0x14d] & 8) != 0) {
*piVar17 = (int)pIVar9;
piVar17[-1] = 0x55f8e6;
CBaseEntity::CalcAbsolutePosition((CBaseEntity *)*piVar17);
}
if ((*(byte *)((int)piVar13 + 0x14d) & 8) != 0) {
*piVar17 = (int)piVar13;
piVar17[-1] = 0x55f449;
CBaseEntity::CalcAbsolutePosition((CBaseEntity *)*piVar17);
}
local_7c = (float)piVar13[0xb8] - *(float *)(pIVar9 + 0x2e0);
local_78 = (float)piVar13[0xb9] - *(float *)(pIVar9 + 0x2e4);
fVar1 = (float)piVar13[0xba];
fVar2 = *(float *)(pIVar9 + 0x2e8);
*piVar17 = (int)&local_7c;
local_74 = fVar1 - fVar2;
piVar17[-1] = 0x55f49f;
VectorNormalize((Vector *)*piVar17);
pcVar4 = *(code **)(*(int *)this + 0x6d8);
piVar17[1] = (int)piVar13;
*piVar17 = (int)this;
piVar17[-1] = 0x55f4c1;
uVar12 = CTerrorWeapon::HasBeenPreviouslyHit
((CTerrorWeapon *)*piVar17,(CBaseEntity *)piVar17[1]);
piVar17[1] = (int)local_130;
piVar17[3] = (uVar12 ^ 1) & 0xff;
piVar17[2] = (int)&local_7c;
*piVar17 = (int)this;
piVar17[-1] = 0x55f4e7;
(*pcVar4)();
piVar17[1] = (int)piVar13;
*piVar17 = (int)this;
piVar17[-1] = 0x55f4f6;
CTerrorWeapon::MarkAsHit((CTerrorWeapon *)*piVar17,(CBaseEntity *)piVar17[1]);
if (cVar8 == '\0') goto LAB_0055f328;
this[0x1821] = (CTankClaw)0x1;
}
piVar17[-1] = 0x55f50f;
cVar6 = CTerrorGameRules::HasPlayerControlledZombies();
if (cVar6 == '\0') {
/* try { // try from 0055f8b0 to 0055f980 has its CatchHandler @ 0055f9d9 */
piVar17[-1] = 0x55f8b5;
cVar6 = CTerrorGameRules::IsSurvivalMode();
if (cVar6 == '\0') goto LAB_0055f328;
}
*piVar17 = 2;
piVar17[-1] = 0x55f523;
piVar13 = (int *)GetGlobalTeam(*piVar17);
iVar10 = 0;
if (piVar13 != (int *)0x0) {
while( true ) {
iVar14 = *piVar13;
*piVar17 = (int)piVar13;
pcVar4 = *(code **)(iVar14 + 0x354);
piVar17[-1] = 0x55f53e;
iVar14 = (*pcVar4)();
if (iVar14 <= iVar10) break;
iVar14 = *piVar13;
piVar17[1] = iVar10;
*piVar17 = (int)piVar13;
/* try { // try from 0055f54f to 0055f898 has its CatchHandler @ 0055f999 */
pcVar4 = *(code **)(iVar14 + 0x358);
piVar17[-1] = 0x55f555;
piVar15 = (int *)(*pcVar4)();
if (piVar15 != (int *)0x0) {
piVar17[1] = (int)piVar15;
*piVar17 = (int)this;
piVar17[-1] = 0x55f56a;
cVar6 = CTerrorWeapon::HasBeenPreviouslyHit
((CTerrorWeapon *)*piVar17,(CBaseEntity *)piVar17[1]);
if (cVar6 == '\0') {
iVar14 = *piVar15;
*piVar17 = (int)piVar15;
pcVar4 = *(code **)(iVar14 + 300);
piVar17[-1] = 0x55f579;
cVar6 = (*pcVar4)();
if (cVar6 != '\0') {
piVar17[5] = 8;
piVar17[6] = (int)&local_dc;
piVar17[3] = (int)&local_20c;
piVar17[2] = (int)&local_218;
piVar17[4] = (int)piVar15;
piVar17[1] = (int)param_2;
*piVar17 = (int)param_1;
piVar17[-1] = 0x55f5b9;
UTIL_TraceModel((Vector *)*piVar17,(Vector *)piVar17[1],(Vector *)piVar17[2],
(Vector *)piVar17[3],(CBaseEntity *)piVar17[4],piVar17[5],
(CGameTrace *)piVar17[6]);
if (piVar15 == local_90) {
iVar14 = *(int *)pIVar9;
piVar17[1] = (int)pIVar9;
*piVar17 = (int)&local_1dc;
pcVar4 = *(code **)(iVar14 + 0x234);
piVar17[-1] = 0x55f5e0;
(*pcVar4)();
local_148 = 1;
local_18c = local_1dc;
local_184 = local_1d4;
local_17c = local_d0 - local_1dc;
local_174 = local_c8 - local_1d4;
local_154 = 0;
local_158 = 0;
local_178 = local_cc - local_1d8;
local_15c = 0;
local_14c = 0;
local_164 = 0;
local_168 = 0;
local_16c = 0;
local_188 = local_1d8;
local_147 = local_17c * local_17c + local_174 * local_174 + local_178 * local_178
!= 0.0;
iVar14 = *enginetrace;
piVar17[3] = (int)&local_7c;
piVar17[2] = (int)local_200;
piVar17[1] = 0x600400b;
*piVar17 = (int)&local_18c;
piVar17[-1] = (int)enginetrace;
pcVar4 = *(code **)(iVar14 + 0x14);
piVar17[-2] = 0x55f6f3;
(*pcVar4)();
if (*(int *)(r_visualizetraces._28_4_ + 0x30) != 0) {
piVar17[5] = -0x40800000;
*piVar17 = (int)local_70;
piVar17[4] = 1;
piVar17[3] = 0;
piVar17[2] = 0;
piVar17[1] = 0xff;
piVar17[-1] = (int)&local_7c;
piVar17[-2] = 0x55f73c;
DebugDrawLine((Vector *)piVar17[-1],(Vector *)*piVar17,piVar17[1],piVar17[2],
piVar17[3],SUB41(piVar17[4],0),(float)piVar17[5]);
}
piVar5 = piVar17 + -1;
if (*(int *)(ZombieShowSwings._28_4_ + 0x30) != 0) {
iVar14 = *(int *)pIVar9;
*piVar17 = (int)pIVar9;
piVar17[-1] = (int)&local_18c;
pcVar4 = *(code **)(iVar14 + 0x234);
piVar17[-2] = 0x55f763;
(*pcVar4)();
piVar17[-1] = (int)&local_d0;
piVar17[4] = 0x4121999a;
piVar17[3] = 1;
piVar17[2] = 0;
piVar17[1] = 0;
*piVar17 = 0xff;
piVar17[-2] = (int)&local_18c;
piVar17[-3] = 0x55f7a6;
NDebugOverlay::Line((Vector *)piVar17[-2],(Vector *)piVar17[-1],*piVar17,
piVar17[1],piVar17[2],SUB41(piVar17[3],0),(float)piVar17[4])
;
piVar5 = piVar17 + -2;
}
piVar17 = piVar5;
*piVar17 = (int)&local_7c;
piVar17[-1] = 0x55f7b4;
cVar6 = CGameTrace::DidHitWorld((CGameTrace *)*piVar17);
if (cVar6 == '\0') {
if (((byte)pIVar9[0x14d] & 8) != 0) {
*piVar17 = (int)pIVar9;
/* try { // try from 0055f98f to 0055f993 has its CatchHandler @ 0055f999 */
piVar17[-1] = 0x55f994;
CBaseEntity::CalcAbsolutePosition((CBaseEntity *)*piVar17);
}
if ((*(byte *)((int)piVar15 + 0x14d) & 8) != 0) {
*piVar17 = (int)piVar15;
piVar17[-1] = 0x55f7e0;
CBaseEntity::CalcAbsolutePosition((CBaseEntity *)*piVar17);
}
local_18c = (float)piVar15[0xb8] - *(float *)(pIVar9 + 0x2e0);
local_188 = (float)piVar15[0xb9] - *(float *)(pIVar9 + 0x2e4);
fVar1 = (float)piVar15[0xba];
fVar2 = *(float *)(pIVar9 + 0x2e8);
*piVar17 = (int)&local_18c;
local_184 = fVar1 - fVar2;
piVar17[-1] = 0x55f83c;
VectorNormalize((Vector *)*piVar17);
pcVar4 = *(code **)(*(int *)this + 0x6d8);
piVar17[1] = (int)piVar15;
*piVar17 = (int)this;
piVar17[-1] = 0x55f85e;
uVar12 = CTerrorWeapon::HasBeenPreviouslyHit
((CTerrorWeapon *)*piVar17,(CBaseEntity *)piVar17[1]);
piVar17[2] = (int)&local_18c;
piVar17[1] = (int)&local_dc;
piVar17[3] = (uVar12 ^ 1) & 0xff;
*piVar17 = (int)this;
piVar17[-1] = 0x55f88a;
(*pcVar4)();
piVar17[1] = (int)piVar15;
*piVar17 = (int)this;
piVar17[-1] = 0x55f899;
CTerrorWeapon::MarkAsHit((CTerrorWeapon *)*piVar17,(CBaseEntity *)piVar17[1]);
}
}
}
}
}
iVar10 = iVar10 + 1;
}
}
goto LAB_0055f328;
}
}
else {
piVar17 = (int *)&stack0xfffffda4;
if (piVar13 != (int *)0x0) {
(**(code **)(*(int *)pIVar9 + 0x234))();
piVar17 = (int *)&stack0xfffffda0;
local_98 = 1;
local_dc = local_18c;
local_d8 = local_188;
local_cc = local_124 - local_18c;
local_c8 = local_120 - local_188;
local_a4 = 0;
local_a8 = 0;
local_c4 = local_11c - local_184;
local_ac = 0;
local_9c = 0;
local_b4 = 0;
local_b8 = 0;
local_bc = 0;
local_d4 = local_184;
local_97 = local_c8 * local_c8 + local_cc * local_cc + local_c4 * local_c4 != 0.0;
(**(code **)(*enginetrace + 0x14))();
if (*(int *)(r_visualizetraces._28_4_ + 0x30) != 0) {
DebugDrawLine((Vector *)&local_7c,local_70,0xff,0,0,true,-1.0);
}
if (*(int *)(ZombieShowSwings._28_4_ + 0x30) != 0) {
(**(code **)(*(int *)pIVar9 + 0x234))();
piVar17 = (int *)&stack0xfffffd9c;
NDebugOverlay::Line((Vector *)&local_dc,(Vector *)&local_124,0xff,0,0,true,10.1);
}
*piVar17 = (int)&local_7c;
piVar17[-1] = 0x55f289;
cVar6 = CGameTrace::DidHitWorld((CGameTrace *)*piVar17);
if (cVar6 == '\0') goto LAB_0055f3e0;
}
}
*piVar17 = (int)local_130;
piVar17[-1] = 0x55f299;
cVar6 = CGameTrace::DidHitWorld((CGameTrace *)*piVar17);
if (cVar6 != '\0') {
iVar10 = *(int *)pIVar9;
*piVar17 = (int)pIVar9;
pcVar4 = *(code **)(iVar10 + 0x288);
piVar17[-1] = 0x55f2b2;
pfVar11 = (float *)(*pcVar4)();
local_7c = *(float *)param_2 - *pfVar11;
local_78 = *(float *)(param_2 + 4) - pfVar11[1];
fVar1 = *(float *)(param_2 + 8);
fVar2 = pfVar11[2];
*piVar17 = (int)&local_7c;
local_74 = fVar1 - fVar2;
piVar17[-1] = 0x55f2ed;
VectorNormalize((Vector *)*piVar17);
iVar10 = *(int *)this;
CVar3 = this[0x1820];
piVar17[2] = (int)&local_7c;
piVar17[1] = (int)local_130;
piVar17[3] = (uint)((byte)CVar3 ^ 1);
*piVar17 = (int)this;
pcVar4 = *(code **)(iVar10 + 0x6d8);
piVar17[-1] = 0x55f319;
(*pcVar4)();
this[0x1820] = (CTankClaw)0x1;
}
LAB_0055f328:
iVar10 = *lagcompensation;
*piVar17 = (int)lagcompensation;
piVar17[1] = (int)pIVar9;
pcVar4 = *(code **)(iVar10 + 4);
piVar17[-1] = 0x55f33f;
(*pcVar4)();
local_200[0] = &PTR_ShouldHitEntity_00c54590;
*piVar17 = (int)local_1f0;
local_1e4 = 0;
piVar17[-1] = 0x55f361;
CUtlMemory<IHandleEntity*,int>::Purge((CUtlMemory<IHandleEntity*,int> *)*piVar17);
*piVar17 = (int)local_1f0;
local_1e0 = local_1f0[0];
piVar17[-1] = 0x55f375;
CUtlMemory<IHandleEntity*,int>::Purge((CUtlMemory<IHandleEntity*,int> *)*piVar17);
return;
}
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.