SurvivorReplacement::Restore
0x009ec590 · 8210 bytes · __thiscall
_ZN19SurvivorReplacement7RestoreEP13CTerrorPlayerS1_
Decompiled
undefined (3 params)
/* SurvivorReplacement::Restore(CTerrorPlayer*, CTerrorPlayer*) */
void __thiscall
SurvivorReplacement::Restore
(SurvivorReplacement *this,CTerrorPlayer *param_1,CTerrorPlayer *param_2)
{
float fVar1;
float fVar2;
SurvivorReplacement SVar3;
CBaseEdict *pCVar4;
uint uVar5;
int *piVar6;
uint uVar7;
CBaseEntity *this_00;
char cVar8;
CTerrorPlayer CVar9;
int iVar10;
int iVar11;
undefined4 *puVar12;
uint *puVar13;
CSurvivorPosition *pCVar14;
int iVar15;
undefined *puVar16;
CTerrorPlayer *pCVar17;
undefined *puVar18;
CBaseEntity *pCVar19;
longdouble lVar20;
float fVar21;
int local_44;
undefined *local_40;
uint local_30 [3];
undefined4 local_24;
undefined4 local_20;
(**(code **)(*(int *)param_2 + 0x8cc))(param_2,2,*(undefined4 *)this,1);
if (this[0x34] == (SurvivorReplacement)0x0) {
CCSPlayer::State_Transition((CCSPlayer *)param_2,6);
}
else {
param_2[0x3e41] = param_1[0x3e41];
CCSPlayer::State_Transition((CCSPlayer *)param_2,0);
(**(code **)(*(int *)param_2 + 100))(param_2);
}
if (this[0x34] != (SurvivorReplacement)0x0) {
iVar11 = *(int *)(this + 0x28);
if (iVar11 != *(int *)(param_2 + 0x100)) {
(**(code **)(*(int *)param_2 + 0x214))(param_2,param_2 + 0x100);
*(int *)(param_2 + 0x100) = iVar11;
}
CTerrorPlayer::SetHealthBuffer(param_2,*(float *)(this + 0x2c));
iVar11 = *(int *)(this + 0x30);
iVar10 = CBaseEntity::GetTeamNumber((CBaseEntity *)param_2);
cVar8 = IsASurvivorTeam(iVar10);
local_40._0_1_ = '\0';
if (cVar8 == '\0') {
iVar10 = *(int *)(param_2 + 0x2e54);
}
else {
local_40._0_1_ = CTerrorPlayer::IsOnThirdStrike(param_2);
iVar10 = *(int *)(param_2 + 0x2e54);
}
if (iVar11 != iVar10) {
if (param_2[0x6c] == (CTerrorPlayer)0x0) {
pCVar4 = *(CBaseEdict **)(param_2 + 0x30);
if (pCVar4 != (CBaseEdict *)0x0) {
*(uint *)pCVar4 = *(uint *)pCVar4 | 0x101;
iVar10 = CBaseEdict::GetChangeAccessor(pCVar4);
*(undefined2 *)(iVar10 + 2) = 0;
}
}
else {
param_2[0x70] = (CTerrorPlayer)((byte)param_2[0x70] | 1);
}
*(int *)(param_2 + 0x2e54) = iVar11;
}
CVar9 = (CTerrorPlayer)CTerrorPlayer::IsOnThirdStrike(param_2);
if (CVar9 != param_2[0x2e58]) {
if (param_2[0x6c] == (CTerrorPlayer)0x0) {
pCVar4 = *(CBaseEdict **)(param_2 + 0x30);
if (pCVar4 != (CBaseEdict *)0x0) {
*(uint *)pCVar4 = *(uint *)pCVar4 | 0x101;
iVar11 = CBaseEdict::GetChangeAccessor(pCVar4);
*(undefined2 *)(iVar11 + 2) = 0;
}
}
else {
param_2[0x70] = (CTerrorPlayer)((byte)param_2[0x70] | 1);
}
param_2[0x2e58] = CVar9;
}
cVar8 = CTerrorPlayer::IsOnThirdStrike(param_2);
if (cVar8 == '\0') {
if ((char)local_40 != '\0') {
CTerrorPlayer::StopTrackedSound(param_2,"Player.Heartbeat");
}
}
else {
CTerrorPlayer::StopTrackedSound(param_2,"Player.Heartbeat");
CCSPlayer::EmitPrivateSound((CCSPlayer *)param_2,"Player.Heartbeat");
CTerrorPlayer::TrackSound(param_2,"Player.Heartbeat");
}
SVar3 = this[0x35];
if (SVar3 != *(SurvivorReplacement *)(param_2 + 0x32fc)) {
if (param_2[0x6c] == (CTerrorPlayer)0x0) {
pCVar4 = *(CBaseEdict **)(param_2 + 0x30);
if (pCVar4 != (CBaseEdict *)0x0) {
*(uint *)pCVar4 = *(uint *)pCVar4 | 0x101;
iVar11 = CBaseEdict::GetChangeAccessor(pCVar4);
*(undefined2 *)(iVar11 + 2) = 0;
}
}
else {
param_2[0x70] = (CTerrorPlayer)((byte)param_2[0x70] | 1);
}
*(SurvivorReplacement *)(param_2 + 0x32fc) = SVar3;
}
}
CBaseEntity::SetMoveType((CBaseEntity *)param_2,*(undefined4 *)(this + 0x38),0);
fVar21 = *(float *)(this + 0x3c);
fVar1 = *(float *)(this + 0x40);
fVar2 = *(float *)(this + 0x44);
if (((fVar21 != *(float *)(param_2 + 0x2000)) || (fVar1 != *(float *)(param_2 + 0x2004))) ||
(fVar2 != *(float *)(param_2 + 0x2008))) {
if (param_2[0x6c] == (CTerrorPlayer)0x0) {
pCVar4 = *(CBaseEdict **)(param_2 + 0x30);
if (pCVar4 != (CBaseEdict *)0x0) {
*(uint *)pCVar4 = *(uint *)pCVar4 | 0x101;
iVar11 = CBaseEdict::GetChangeAccessor(pCVar4);
*(undefined2 *)(iVar11 + 2) = 0;
}
}
else {
param_2[0x70] = (CTerrorPlayer)((byte)param_2[0x70] | 1);
}
*(float *)(param_2 + 0x2000) = fVar21;
*(float *)(param_2 + 0x2004) = fVar1;
*(float *)(param_2 + 0x2008) = fVar2;
}
SVar3 = this[0x4a];
if (SVar3 != *(SurvivorReplacement *)(param_2 + 0x1a90)) {
(**(code **)(*(int *)(param_2 + 0x1a40) + 4))(param_2 + 0x1a40,param_2 + 0x1a90);
*(SurvivorReplacement *)(param_2 + 0x1a90) = SVar3;
}
SVar3 = this[0x4b];
if (SVar3 != *(SurvivorReplacement *)(param_2 + 0x1a91)) {
(**(code **)(*(int *)(param_2 + 0x1a40) + 4))(param_2 + 0x1a40,param_2 + 0x1a91);
*(SurvivorReplacement *)(param_2 + 0x1a91) = SVar3;
}
if (this[0x4c] != (SurvivorReplacement)0x0) {
CBaseEntity::AddFlag((CBaseEntity *)param_2,2);
}
SVar3 = this[0x48];
if (SVar3 != *(SurvivorReplacement *)(param_2 + 0x1ac8)) {
(**(code **)(*(int *)(param_2 + 0x1a40) + 4))(param_2 + 0x1a40,param_2 + 0x1ac8);
*(SurvivorReplacement *)(param_2 + 0x1ac8) = SVar3;
}
puVar16 = g_pEntityList;
*(SurvivorReplacement *)(param_2 + 0x39e4) = this[0x4d];
*(SurvivorReplacement *)(param_2 + 0x3e41) = this[0x4e];
*(undefined4 *)(param_2 + 0x3f90) = *(undefined4 *)(this + 0xf4);
*(undefined4 *)(param_2 + 0x3f94) = *(undefined4 *)(this + 0xf8);
*(undefined4 *)(param_2 + 0x3f98) = *(undefined4 *)(this + 0xfc);
*(SurvivorReplacement *)(param_2 + 0x3f9c) = this[0x100];
*(undefined4 *)(param_2 + 0x3fa0) = *(undefined4 *)(this + 0x104);
uVar5 = *(uint *)(this + 0x228);
if (((uVar5 != 0xffffffff) &&
(puVar16 = puVar16 + (uVar5 & 0xfff) * 0x10, puVar16 != (undefined *)0xfffffffc)) &&
((*(uint *)(puVar16 + 8) == uVar5 >> 0xc && (*(int *)(puVar16 + 4) != 0)))) {
*(float *)(this + 0xc) =
*(float *)(this + 0xc) + *(float *)(hack_elevator_z_offset._28_4_ + 0x2c);
}
(**(code **)(*(int *)param_2 + 0x1dc))(param_2,this + 4,this + 0x1c,this + 0x10);
CBaseCombatCharacter::RemoveAllWeapons((CBaseCombatCharacter *)param_2);
if (0 < *(int *)(this + 0x6c)) {
iVar11 = 0;
do {
iVar10 = iVar11 * 4;
iVar11 = iVar11 + 1;
(**(code **)(*(int *)param_2 + 0x468))
(param_2,*(undefined4 *)(*(int *)(this + 0x60) + iVar10));
} while (iVar11 < *(int *)(this + 0x6c));
}
if (((*(int *)(this + 0x5c) != 0) &&
((**(code **)(*(int *)param_2 + 0x474))(param_2,*(int *)(this + 0x5c),0),
this[0x49] != (SurvivorReplacement)0x0)) &&
(cVar8 = (**(code **)(*(int *)param_2 + 0x778))(param_2), cVar8 == '\0')) {
CBaseEntity::AddEffects(*(CBaseEntity **)(this + 0x5c),0x20);
}
iVar11 = 0;
do {
iVar10 = iVar11 + 1;
CBaseCombatCharacter::SetAmmoCount
((CBaseCombatCharacter *)param_2,*(int *)(this + iVar11 * 4 + 0x74),iVar11);
iVar11 = iVar10;
} while (iVar10 != 0x20);
SVar3 = this[0x108];
if (SVar3 != *(SurvivorReplacement *)(param_2 + 0x2d94)) {
if (param_2[0x6c] == (CTerrorPlayer)0x0) {
pCVar4 = *(CBaseEdict **)(param_2 + 0x30);
if (pCVar4 != (CBaseEdict *)0x0) {
*(uint *)pCVar4 = *(uint *)pCVar4 | 0x101;
iVar11 = CBaseEdict::GetChangeAccessor(pCVar4);
*(undefined2 *)(iVar11 + 2) = 0;
}
}
else {
param_2[0x70] = (CTerrorPlayer)((byte)param_2[0x70] | 1);
}
*(SurvivorReplacement *)(param_2 + 0x2d94) = SVar3;
}
CHandle<CTerrorPlayer>::CHandle
((CHandle<CTerrorPlayer> *)local_30,*(CTerrorPlayer **)(this + 0x10c));
if (((local_30[0] == 0xffffffff) ||
(puVar16 = g_pEntityList + (local_30[0] & 0xfff) * 0x10, puVar16 == (undefined *)0xfffffffc))
|| (*(uint *)(puVar16 + 8) != local_30[0] >> 0xc)) {
iVar11 = 0;
}
else {
iVar11 = *(int *)(puVar16 + 4);
}
uVar5 = *(uint *)(param_2 + 0x2e24);
if (((uVar5 == 0xffffffff) ||
(puVar16 = g_pEntityList + (uVar5 & 0xfff) * 0x10, puVar16 == (undefined *)0xfffffffc)) ||
(*(uint *)(puVar16 + 8) != uVar5 >> 0xc)) {
iVar10 = 0;
}
else {
iVar10 = *(int *)(puVar16 + 4);
}
if (iVar11 != iVar10) {
if (param_2[0x6c] == (CTerrorPlayer)0x0) {
pCVar4 = *(CBaseEdict **)(param_2 + 0x30);
if (pCVar4 != (CBaseEdict *)0x0) {
*(uint *)pCVar4 = *(uint *)pCVar4 | 0x101;
iVar11 = CBaseEdict::GetChangeAccessor(pCVar4);
*(undefined2 *)(iVar11 + 2) = 0;
}
}
else {
param_2[0x70] = (CTerrorPlayer)((byte)param_2[0x70] | 1);
}
*(uint *)(param_2 + 0x2e24) = local_30[0];
}
iVar11 = *(int *)(this + 0x10c);
if (iVar11 != 0) {
CHandle<CTerrorPlayer>::CHandle((CHandle<CTerrorPlayer> *)local_30,param_2);
if (((local_30[0] == 0xffffffff) ||
(puVar16 = g_pEntityList + (local_30[0] & 0xfff) * 0x10, puVar16 == (undefined *)0xfffffffc)
) || (*(uint *)(puVar16 + 8) != local_30[0] >> 0xc)) {
local_40 = (undefined *)0x0;
}
else {
local_40 = *(undefined **)(puVar16 + 4);
}
uVar5 = *(uint *)(iVar11 + 0x2e28);
if (((uVar5 == 0xffffffff) ||
(puVar16 = g_pEntityList + (uVar5 & 0xfff) * 0x10, puVar16 == (undefined *)0xfffffffc)) ||
(*(uint *)(puVar16 + 8) != uVar5 >> 0xc)) {
iVar10 = 0;
}
else {
iVar10 = *(int *)(puVar16 + 4);
}
if (local_40 != (undefined *)iVar10) {
if (*(char *)(iVar11 + 0x6c) == '\0') {
pCVar4 = *(CBaseEdict **)(iVar11 + 0x30);
if (pCVar4 != (CBaseEdict *)0x0) {
*(uint *)pCVar4 = *(uint *)pCVar4 | 0x101;
iVar10 = CBaseEdict::GetChangeAccessor(pCVar4);
*(undefined2 *)(iVar10 + 2) = 0;
}
}
else {
*(byte *)(iVar11 + 0x70) = *(byte *)(iVar11 + 0x70) | 1;
}
*(uint *)(iVar11 + 0x2e28) = local_30[0];
}
}
*(undefined4 *)(param_2 + 0x2e38) = *(undefined4 *)(this + 0x110);
*(undefined4 *)(param_2 + 0x2e3c) = *(undefined4 *)(this + 0x114);
*(undefined4 *)(param_2 + 0x2e40) = *(undefined4 *)(this + 0x118);
*(undefined4 *)(param_2 + 0x2e44) = *(undefined4 *)(this + 0x11c);
*(undefined4 *)(param_2 + 0x2e48) = *(undefined4 *)(this + 0x120);
*(undefined4 *)(param_2 + 0x2e4c) = *(undefined4 *)(this + 0x124);
iVar11 = *(int *)(this + 0x128);
if (iVar11 != *(int *)(param_2 + 0x2e54)) {
if (param_2[0x6c] == (CTerrorPlayer)0x0) {
pCVar4 = *(CBaseEdict **)(param_2 + 0x30);
if (pCVar4 != (CBaseEdict *)0x0) {
*(uint *)pCVar4 = *(uint *)pCVar4 | 0x101;
iVar10 = CBaseEdict::GetChangeAccessor(pCVar4);
*(undefined2 *)(iVar10 + 2) = 0;
}
}
else {
param_2[0x70] = (CTerrorPlayer)((byte)param_2[0x70] | 1);
}
*(int *)(param_2 + 0x2e54) = iVar11;
}
SVar3 = this[300];
if (SVar3 != *(SurvivorReplacement *)(param_2 + 0x2e58)) {
if (param_2[0x6c] == (CTerrorPlayer)0x0) {
pCVar4 = *(CBaseEdict **)(param_2 + 0x30);
if (pCVar4 != (CBaseEdict *)0x0) {
*(uint *)pCVar4 = *(uint *)pCVar4 | 0x101;
iVar11 = CBaseEdict::GetChangeAccessor(pCVar4);
*(undefined2 *)(iVar11 + 2) = 0;
}
}
else {
param_2[0x70] = (CTerrorPlayer)((byte)param_2[0x70] | 1);
}
*(SurvivorReplacement *)(param_2 + 0x2e58) = SVar3;
}
*(undefined4 *)(param_2 + 0x39e8) = *(undefined4 *)(this + 0x130);
*(undefined4 *)(param_2 + 0x39ec) = *(undefined4 *)(this + 0x134);
*(SurvivorReplacement *)(param_2 + 0x39f0) = this[0x138];
SVar3 = this[0x139];
if (SVar3 != *(SurvivorReplacement *)(param_2 + 0x39f1)) {
if (param_2[0x6c] == (CTerrorPlayer)0x0) {
pCVar4 = *(CBaseEdict **)(param_2 + 0x30);
if (pCVar4 != (CBaseEdict *)0x0) {
*(uint *)pCVar4 = *(uint *)pCVar4 | 0x101;
iVar11 = CBaseEdict::GetChangeAccessor(pCVar4);
*(undefined2 *)(iVar11 + 2) = 0;
}
}
else {
param_2[0x70] = (CTerrorPlayer)((byte)param_2[0x70] | 1);
}
*(SurvivorReplacement *)(param_2 + 0x39f1) = SVar3;
}
SVar3 = this[0x13a];
if (SVar3 != *(SurvivorReplacement *)(param_2 + 0x39f2)) {
if (param_2[0x6c] == (CTerrorPlayer)0x0) {
pCVar4 = *(CBaseEdict **)(param_2 + 0x30);
if (pCVar4 != (CBaseEdict *)0x0) {
*(uint *)pCVar4 = *(uint *)pCVar4 | 0x101;
iVar11 = CBaseEdict::GetChangeAccessor(pCVar4);
*(undefined2 *)(iVar11 + 2) = 0;
}
}
else {
param_2[0x70] = (CTerrorPlayer)((byte)param_2[0x70] | 1);
}
*(SurvivorReplacement *)(param_2 + 0x39f2) = SVar3;
}
*(undefined4 *)(param_2 + 0x39f8) = *(undefined4 *)(this + 0x140);
(*(code *)**(undefined4 **)(param_2 + 0x39f4))(param_2 + 0x39f4);
fVar21 = *(float *)(this + 0x144);
if (((fVar21 != *(float *)(param_2 + 0x39fc)) ||
(*(float *)(this + 0x148) != *(float *)(param_2 + 0x3a00))) ||
(*(float *)(this + 0x14c) != *(float *)(param_2 + 0x3a04))) {
if (param_2[0x6c] == (CTerrorPlayer)0x0) {
pCVar4 = *(CBaseEdict **)(param_2 + 0x30);
if (pCVar4 != (CBaseEdict *)0x0) {
*(uint *)pCVar4 = *(uint *)pCVar4 | 0x101;
iVar11 = CBaseEdict::GetChangeAccessor(pCVar4);
*(undefined2 *)(iVar11 + 2) = 0;
fVar21 = *(float *)(this + 0x144);
}
}
else {
param_2[0x70] = (CTerrorPlayer)((byte)param_2[0x70] | 1);
fVar21 = *(float *)(this + 0x144);
}
*(float *)(param_2 + 0x39fc) = fVar21;
*(undefined4 *)(param_2 + 0x3a00) = *(undefined4 *)(this + 0x148);
*(undefined4 *)(param_2 + 0x3a04) = *(undefined4 *)(this + 0x14c);
}
fVar21 = *(float *)(this + 0x150);
if (((fVar21 != *(float *)(param_2 + 0x3a08)) ||
(*(float *)(this + 0x154) != *(float *)(param_2 + 0x3a0c))) ||
(*(float *)(this + 0x158) != *(float *)(param_2 + 0x3a10))) {
if (param_2[0x6c] == (CTerrorPlayer)0x0) {
pCVar4 = *(CBaseEdict **)(param_2 + 0x30);
if (pCVar4 != (CBaseEdict *)0x0) {
*(uint *)pCVar4 = *(uint *)pCVar4 | 0x101;
iVar11 = CBaseEdict::GetChangeAccessor(pCVar4);
*(undefined2 *)(iVar11 + 2) = 0;
fVar21 = *(float *)(this + 0x150);
}
}
else {
param_2[0x70] = (CTerrorPlayer)((byte)param_2[0x70] | 1);
fVar21 = *(float *)(this + 0x150);
}
*(float *)(param_2 + 0x3a08) = fVar21;
*(undefined4 *)(param_2 + 0x3a0c) = *(undefined4 *)(this + 0x154);
*(undefined4 *)(param_2 + 0x3a10) = *(undefined4 *)(this + 0x158);
}
fVar21 = *(float *)(this + 0x15c);
if (((fVar21 != *(float *)(param_2 + 0x3a14)) ||
(*(float *)(this + 0x160) != *(float *)(param_2 + 0x3a18))) ||
(*(float *)(this + 0x164) != *(float *)(param_2 + 0x3a1c))) {
if (param_2[0x6c] == (CTerrorPlayer)0x0) {
pCVar4 = *(CBaseEdict **)(param_2 + 0x30);
if (pCVar4 != (CBaseEdict *)0x0) {
*(uint *)pCVar4 = *(uint *)pCVar4 | 0x101;
iVar11 = CBaseEdict::GetChangeAccessor(pCVar4);
*(undefined2 *)(iVar11 + 2) = 0;
fVar21 = *(float *)(this + 0x15c);
}
}
else {
param_2[0x70] = (CTerrorPlayer)((byte)param_2[0x70] | 1);
fVar21 = *(float *)(this + 0x15c);
}
*(float *)(param_2 + 0x3a14) = fVar21;
*(undefined4 *)(param_2 + 0x3a18) = *(undefined4 *)(this + 0x160);
*(undefined4 *)(param_2 + 0x3a1c) = *(undefined4 *)(this + 0x164);
}
fVar21 = *(float *)(this + 0x168);
if (((fVar21 != *(float *)(param_2 + 0x3a20)) ||
(*(float *)(this + 0x16c) != *(float *)(param_2 + 0x3a24))) ||
(*(float *)(this + 0x170) != *(float *)(param_2 + 0x3a28))) {
if (param_2[0x6c] == (CTerrorPlayer)0x0) {
pCVar4 = *(CBaseEdict **)(param_2 + 0x30);
if (pCVar4 != (CBaseEdict *)0x0) {
*(uint *)pCVar4 = *(uint *)pCVar4 | 0x101;
iVar11 = CBaseEdict::GetChangeAccessor(pCVar4);
*(undefined2 *)(iVar11 + 2) = 0;
fVar21 = *(float *)(this + 0x168);
}
}
else {
param_2[0x70] = (CTerrorPlayer)((byte)param_2[0x70] | 1);
fVar21 = *(float *)(this + 0x168);
}
*(float *)(param_2 + 0x3a20) = fVar21;
*(undefined4 *)(param_2 + 0x3a24) = *(undefined4 *)(this + 0x16c);
*(undefined4 *)(param_2 + 0x3a28) = *(undefined4 *)(this + 0x170);
}
*(SurvivorReplacement *)(param_2 + 0x3a2c) = this[0x174];
*(undefined4 *)(param_2 + 0x3a30) = *(undefined4 *)(this + 0x178);
*(undefined4 *)(param_2 + 0x3a34) = *(undefined4 *)(this + 0x17c);
*(undefined4 *)(param_2 + 0x3a38) = *(undefined4 *)(this + 0x180);
*(undefined4 *)(param_2 + 0x3a3c) = *(undefined4 *)(this + 0x184);
*(undefined4 *)(param_2 + 0x3a40) = *(undefined4 *)(this + 0x188);
*(undefined4 *)(param_2 + 0x3a44) = *(undefined4 *)(this + 0x18c);
*(undefined4 *)(param_2 + 0x3a48) = *(undefined4 *)(this + 400);
*(undefined4 *)(param_2 + 0x3a4c) = *(undefined4 *)(this + 0x194);
*(undefined4 *)(param_2 + 0x3a50) = *(undefined4 *)(this + 0x198);
*(undefined4 *)(param_2 + 0x3a54) = *(undefined4 *)(this + 0x19c);
*(undefined4 *)(param_2 + 0x3a58) = *(undefined4 *)(this + 0x1a0);
*(undefined4 *)(param_2 + 0x3a5c) = *(undefined4 *)(this + 0x1a4);
*(undefined4 *)(param_2 + 0x3a60) = *(undefined4 *)(this + 0x1a8);
*(undefined4 *)(param_2 + 0x3260) = *(undefined4 *)(this + 0x1b4);
*(undefined4 *)(param_2 + 0x325c) = *(undefined4 *)(this + 0x1b0);
(*(code *)**(undefined4 **)(param_2 + 0x3258))(param_2 + 0x3258);
*(SurvivorReplacement *)(param_2 + 0x3268) = this[0x1b8];
*(SurvivorReplacement *)(param_2 + 0x3269) = this[0x1b9];
*(SurvivorReplacement *)(param_2 + 0x326a) = this[0x1ba];
fVar21 = *(float *)(this + 0x1bc);
if (fVar21 != *(float *)(param_2 + 0x3f18)) {
if (param_2[0x6c] == (CTerrorPlayer)0x0) {
pCVar4 = *(CBaseEdict **)(param_2 + 0x30);
if (pCVar4 != (CBaseEdict *)0x0) {
*(uint *)pCVar4 = *(uint *)pCVar4 | 0x101;
iVar11 = CBaseEdict::GetChangeAccessor(pCVar4);
*(undefined2 *)(iVar11 + 2) = 0;
}
}
else {
param_2[0x70] = (CTerrorPlayer)((byte)param_2[0x70] | 1);
}
*(float *)(param_2 + 0x3f18) = fVar21;
}
CHandle<CTerrorPlayer>::CHandle
((CHandle<CTerrorPlayer> *)local_30,*(CTerrorPlayer **)(this + 0x1c0));
if (((local_30[0] == 0xffffffff) ||
(puVar16 = g_pEntityList + (local_30[0] & 0xfff) * 0x10, puVar16 == (undefined *)0xfffffffc))
|| (*(uint *)(puVar16 + 8) != local_30[0] >> 0xc)) {
iVar11 = 0;
}
else {
iVar11 = *(int *)(puVar16 + 4);
}
uVar5 = *(uint *)(param_2 + 0x3e68);
if (((uVar5 == 0xffffffff) ||
(puVar16 = g_pEntityList + (uVar5 & 0xfff) * 0x10, puVar16 == (undefined *)0xfffffffc)) ||
(*(uint *)(puVar16 + 8) != uVar5 >> 0xc)) {
iVar10 = 0;
}
else {
iVar10 = *(int *)(puVar16 + 4);
}
if (iVar11 != iVar10) {
if (param_2[0x6c] == (CTerrorPlayer)0x0) {
pCVar4 = *(CBaseEdict **)(param_2 + 0x30);
if (pCVar4 != (CBaseEdict *)0x0) {
*(uint *)pCVar4 = *(uint *)pCVar4 | 0x101;
iVar11 = CBaseEdict::GetChangeAccessor(pCVar4);
*(undefined2 *)(iVar11 + 2) = 0;
}
}
else {
param_2[0x70] = (CTerrorPlayer)((byte)param_2[0x70] | 1);
}
*(uint *)(param_2 + 0x3e68) = local_30[0];
}
iVar11 = *(int *)(this + 0x1c0);
if (iVar11 != 0) {
CHandle<CTerrorPlayer>::CHandle((CHandle<CTerrorPlayer> *)local_30,param_2);
if (((local_30[0] == 0xffffffff) ||
(puVar16 = g_pEntityList + (local_30[0] & 0xfff) * 0x10, puVar16 == (undefined *)0xfffffffc)
) || (*(uint *)(puVar16 + 8) != local_30[0] >> 0xc)) {
local_40 = (undefined *)0x0;
}
else {
local_40 = *(undefined **)(puVar16 + 4);
}
uVar5 = *(uint *)(iVar11 + 0x3e64);
if (((uVar5 == 0xffffffff) ||
(puVar16 = g_pEntityList + (uVar5 & 0xfff) * 0x10, puVar16 == (undefined *)0xfffffffc)) ||
(*(uint *)(puVar16 + 8) != uVar5 >> 0xc)) {
iVar10 = 0;
}
else {
iVar10 = *(int *)(puVar16 + 4);
}
if (local_40 != (undefined *)iVar10) {
if (*(char *)(iVar11 + 0x6c) == '\0') {
pCVar4 = *(CBaseEdict **)(iVar11 + 0x30);
if (pCVar4 != (CBaseEdict *)0x0) {
*(uint *)pCVar4 = *(uint *)pCVar4 | 0x101;
iVar10 = CBaseEdict::GetChangeAccessor(pCVar4);
*(undefined2 *)(iVar10 + 2) = 0;
}
}
else {
*(byte *)(iVar11 + 0x70) = *(byte *)(iVar11 + 0x70) | 1;
}
*(uint *)(iVar11 + 0x3e64) = local_30[0];
}
(**(code **)(**(int **)(param_2 + 0x2910) + 4))(*(int **)(param_2 + 0x2910),0x56,0);
(**(code **)(**(int **)(this + 0x1c0) + 0x7fc))(*(int **)(this + 0x1c0),0x52,0);
}
*(undefined4 *)(param_2 + 0x3ea0) = *(undefined4 *)(this + 0x1c8);
CHandle<CTerrorPlayer>::CHandle
((CHandle<CTerrorPlayer> *)local_30,*(CTerrorPlayer **)(this + 0x1cc));
if (((local_30[0] == 0xffffffff) ||
(puVar16 = g_pEntityList + (local_30[0] & 0xfff) * 0x10, puVar16 == (undefined *)0xfffffffc))
|| (*(uint *)(puVar16 + 8) != local_30[0] >> 0xc)) {
iVar11 = 0;
}
else {
iVar11 = *(int *)(puVar16 + 4);
}
uVar5 = *(uint *)(param_2 + 0x3e48);
if (((uVar5 == 0xffffffff) ||
(puVar16 = g_pEntityList + (uVar5 & 0xfff) * 0x10, puVar16 == (undefined *)0xfffffffc)) ||
(*(uint *)(puVar16 + 8) != uVar5 >> 0xc)) {
iVar10 = 0;
}
else {
iVar10 = *(int *)(puVar16 + 4);
}
if (iVar11 != iVar10) {
if (param_2[0x6c] == (CTerrorPlayer)0x0) {
pCVar4 = *(CBaseEdict **)(param_2 + 0x30);
if (pCVar4 != (CBaseEdict *)0x0) {
*(uint *)pCVar4 = *(uint *)pCVar4 | 0x101;
iVar11 = CBaseEdict::GetChangeAccessor(pCVar4);
*(undefined2 *)(iVar11 + 2) = 0;
}
}
else {
param_2[0x70] = (CTerrorPlayer)((byte)param_2[0x70] | 1);
}
*(uint *)(param_2 + 0x3e48) = local_30[0];
}
local_40 = *(undefined **)(this + 0x1cc);
if (local_40 == (undefined *)0x0) goto LAB_009ed0f6;
uVar5 = *(uint *)((int)local_40 + 0x3e4c);
puVar16 = g_pEntityList;
if (((uVar5 != 0xffffffff) &&
(puVar18 = g_pEntityList + (uVar5 & 0xfff) * 0x10, puVar18 != (undefined *)0xfffffffc)) &&
((*(uint *)(puVar18 + 8) == uVar5 >> 0xc && (*(int *)(puVar18 + 4) != 0)))) {
CHandle<CTerrorPlayer>::CHandle((CHandle<CTerrorPlayer> *)local_30,param_2);
puVar16 = g_pEntityList;
if (((local_30[0] == 0xffffffff) ||
(puVar18 = g_pEntityList + (local_30[0] & 0xfff) * 0x10, puVar18 == (undefined *)0xfffffffc)
) || (*(uint *)(puVar18 + 8) != local_30[0] >> 0xc)) {
local_44 = 0;
}
else {
local_44 = *(int *)(puVar18 + 4);
}
uVar5 = *(uint *)((int)local_40 + 0x3e4c);
if (((uVar5 == 0xffffffff) ||
(puVar18 = g_pEntityList + (uVar5 & 0xfff) * 0x10, puVar18 == (undefined *)0xfffffffc)) ||
(*(uint *)(puVar18 + 8) != uVar5 >> 0xc)) {
if (local_44 != 0) goto LAB_009ee31a;
}
else if (local_44 != *(int *)(puVar18 + 4)) {
LAB_009ee31a:
if (*(char *)((int)local_40 + 0x6c) == '\0') {
pCVar4 = *(CBaseEdict **)((int)local_40 + 0x30);
if (pCVar4 != (CBaseEdict *)0x0) {
*(uint *)pCVar4 = *(uint *)pCVar4 | 0x101;
iVar11 = CBaseEdict::GetChangeAccessor(pCVar4);
*(undefined2 *)(iVar11 + 2) = 0;
puVar16 = g_pEntityList;
}
}
else {
*(byte *)((int)local_40 + 0x70) = *(byte *)((int)local_40 + 0x70) | 1;
}
*(uint *)((int)local_40 + 0x3e4c) = local_30[0];
}
local_40 = *(undefined **)(this + 0x1cc);
}
uVar5 = *(uint *)((int)local_40 + 0x3e44);
if (((uVar5 != 0xffffffff) &&
(puVar16 = puVar16 + (uVar5 & 0xfff) * 0x10, puVar16 != (undefined *)0xfffffffc)) &&
((*(uint *)(puVar16 + 8) == uVar5 >> 0xc && (*(int *)(puVar16 + 4) != 0)))) {
CHandle<CTerrorPlayer>::CHandle((CHandle<CTerrorPlayer> *)local_30,param_2);
if (((local_30[0] == 0xffffffff) ||
(puVar16 = g_pEntityList + (local_30[0] & 0xfff) * 0x10, puVar16 == (undefined *)0xfffffffc)
) || (*(uint *)(puVar16 + 8) != local_30[0] >> 0xc)) {
iVar11 = 0;
}
else {
iVar11 = *(int *)(puVar16 + 4);
}
uVar5 = *(uint *)((int)local_40 + 0x3e44);
if (((uVar5 == 0xffffffff) ||
(puVar16 = g_pEntityList + (uVar5 & 0xfff) * 0x10, puVar16 == (undefined *)0xfffffffc)) ||
(*(uint *)(puVar16 + 8) != uVar5 >> 0xc)) {
if (iVar11 != 0) goto LAB_009ee247;
}
else if (iVar11 != *(int *)(puVar16 + 4)) {
LAB_009ee247:
if (*(char *)((int)local_40 + 0x6c) == '\0') {
pCVar4 = *(CBaseEdict **)((int)local_40 + 0x30);
if (pCVar4 != (CBaseEdict *)0x0) {
*(uint *)pCVar4 = *(uint *)pCVar4 | 0x101;
iVar11 = CBaseEdict::GetChangeAccessor(pCVar4);
*(undefined2 *)(iVar11 + 2) = 0;
}
}
else {
*(byte *)((int)local_40 + 0x70) = *(byte *)((int)local_40 + 0x70) | 1;
}
*(uint *)((int)local_40 + 0x3e44) = local_30[0];
}
local_40 = *(undefined **)(this + 0x1cc);
}
(**(code **)(*(int *)param_2 + 0x98))(param_2,local_40,0xffffffff);
(**(code **)(**(int **)(this + 0x1cc) + 0x7fc))(*(int **)(this + 0x1cc),0x4a,0);
(**(code **)(*(int *)param_2 + 0x7fc))(param_2,0x4e,0);
LAB_009ed0f6:
CHandle<CTerrorPlayer>::CHandle
((CHandle<CTerrorPlayer> *)local_30,*(CTerrorPlayer **)(this + 0x1d4));
if (((local_30[0] == 0xffffffff) ||
(puVar16 = g_pEntityList + (local_30[0] & 0xfff) * 0x10, puVar16 == (undefined *)0xfffffffc))
|| (*(uint *)(puVar16 + 8) != local_30[0] >> 0xc)) {
iVar11 = 0;
}
else {
iVar11 = *(int *)(puVar16 + 4);
}
uVar5 = *(uint *)(param_2 + 0x2a4c);
if (((uVar5 == 0xffffffff) ||
(puVar16 = g_pEntityList + (uVar5 & 0xfff) * 0x10, puVar16 == (undefined *)0xfffffffc)) ||
(*(uint *)(puVar16 + 8) != uVar5 >> 0xc)) {
iVar10 = 0;
}
else {
iVar10 = *(int *)(puVar16 + 4);
}
if (iVar11 != iVar10) {
if (param_2[0x6c] == (CTerrorPlayer)0x0) {
pCVar4 = *(CBaseEdict **)(param_2 + 0x30);
if (pCVar4 != (CBaseEdict *)0x0) {
*(uint *)pCVar4 = *(uint *)pCVar4 | 0x101;
iVar11 = CBaseEdict::GetChangeAccessor(pCVar4);
*(undefined2 *)(iVar11 + 2) = 0;
}
}
else {
param_2[0x70] = (CTerrorPlayer)((byte)param_2[0x70] | 1);
}
*(uint *)(param_2 + 0x2a4c) = local_30[0];
}
iVar11 = *(int *)(this + 0x1d4);
if (iVar11 != 0) {
CHandle<CTerrorPlayer>::CHandle((CHandle<CTerrorPlayer> *)local_30,param_2);
if (((local_30[0] == 0xffffffff) ||
(puVar16 = g_pEntityList + (local_30[0] & 0xfff) * 0x10, puVar16 == (undefined *)0xfffffffc)
) || (*(uint *)(puVar16 + 8) != local_30[0] >> 0xc)) {
local_40 = (undefined *)0x0;
}
else {
local_40 = *(undefined **)(puVar16 + 4);
}
uVar5 = *(uint *)(iVar11 + 0x2a48);
if (((uVar5 == 0xffffffff) ||
(puVar16 = g_pEntityList + (uVar5 & 0xfff) * 0x10, puVar16 == (undefined *)0xfffffffc)) ||
(*(uint *)(puVar16 + 8) != uVar5 >> 0xc)) {
iVar10 = 0;
}
else {
iVar10 = *(int *)(puVar16 + 4);
}
if (local_40 != (undefined *)iVar10) {
if (*(char *)(iVar11 + 0x6c) == '\0') {
pCVar4 = *(CBaseEdict **)(iVar11 + 0x30);
if (pCVar4 != (CBaseEdict *)0x0) {
*(uint *)pCVar4 = *(uint *)pCVar4 | 0x101;
iVar10 = CBaseEdict::GetChangeAccessor(pCVar4);
*(undefined2 *)(iVar10 + 2) = 0;
}
}
else {
*(byte *)(iVar11 + 0x70) = *(byte *)(iVar11 + 0x70) | 1;
}
*(uint *)(iVar11 + 0x2a48) = local_30[0];
}
*(undefined4 *)(*(int *)(this + 0x1d4) + 0x3f00) = 0x3e4ccccd;
iVar11 = *(int *)(this + 0x1d4);
lVar20 = (longdouble)CountdownTimer::Now();
if ((float)lVar20 + 0.2 != *(float *)(iVar11 + 0x3efc)) {
(**(code **)(*(int *)(iVar11 + 0x3ef4) + 4))(iVar11 + 0x3ef4,iVar11 + 0x3efc);
*(float *)(iVar11 + 0x3efc) = (float)lVar20 + 0.2;
}
if (*(float *)(iVar11 + 0x3ef8) != 0.2) {
(**(code **)(*(int *)(iVar11 + 0x3ef4) + 4))(iVar11 + 0x3ef4,iVar11 + 0x3ef8);
*(undefined4 *)(iVar11 + 0x3ef8) = 0x3e4ccccd;
}
(**(code **)(*(int *)param_2 + 0x7fc))(param_2,0x4f,0);
}
piVar6 = *(int **)(this + 0x1d0);
if (piVar6 == (int *)0x0) {
*(undefined4 *)(param_2 + 0x3e54) = 0xffffffff;
}
else {
puVar12 = (undefined4 *)(**(code **)(*piVar6 + 0xc))(piVar6);
*(undefined4 *)(param_2 + 0x3e54) = *puVar12;
}
if (*(CTerrorPlayer **)(this + 0x1d0) != (CTerrorPlayer *)0x0) {
CTerrorPlayer::QueuePummelVictim(*(CTerrorPlayer **)(this + 0x1d0),param_2,-1.0);
}
piVar6 = *(int **)(this + 0x204);
if (piVar6 == (int *)0x0) {
local_40 = (undefined *)0xffffffff;
iVar11 = 0;
}
else {
puVar13 = (uint *)(**(code **)(*piVar6 + 0xc))(piVar6);
local_40 = (undefined *)*puVar13;
if (((local_40 == (undefined *)0xffffffff) ||
(puVar16 = g_pEntityList + ((uint)local_40 & 0xfff) * 0x10,
puVar16 == (undefined *)0xfffffffc)) || (*(uint *)(puVar16 + 8) != (uint)local_40 >> 0xc)) {
iVar11 = 0;
}
else {
iVar11 = *(int *)(puVar16 + 4);
}
}
uVar5 = *(uint *)(param_2 + 0x3ee0);
if (((uVar5 == 0xffffffff) ||
(puVar16 = g_pEntityList + (uVar5 & 0xfff) * 0x10, puVar16 == (undefined *)0xfffffffc)) ||
(*(uint *)(puVar16 + 8) != uVar5 >> 0xc)) {
iVar10 = 0;
}
else {
iVar10 = *(int *)(puVar16 + 4);
}
if (iVar11 != iVar10) {
if (param_2[0x6c] == (CTerrorPlayer)0x0) {
pCVar4 = *(CBaseEdict **)(param_2 + 0x30);
if (pCVar4 != (CBaseEdict *)0x0) {
*(uint *)pCVar4 = *(uint *)pCVar4 | 0x101;
iVar11 = CBaseEdict::GetChangeAccessor(pCVar4);
*(undefined2 *)(iVar11 + 2) = 0;
}
*(undefined **)(param_2 + 0x3ee0) = local_40;
}
else {
param_2[0x70] = (CTerrorPlayer)((byte)param_2[0x70] | 1);
*(undefined **)(param_2 + 0x3ee0) = local_40;
}
}
iVar11 = *(int *)(this + 0x204);
if (iVar11 != 0) {
puVar13 = (uint *)(**(code **)(*(int *)param_2 + 0xc))(param_2);
uVar5 = *puVar13;
if (((uVar5 == 0xffffffff) ||
(puVar16 = g_pEntityList + (uVar5 & 0xfff) * 0x10, puVar16 == (undefined *)0xfffffffc)) ||
(*(uint *)(puVar16 + 8) != uVar5 >> 0xc)) {
local_44 = 0;
}
else {
local_44 = *(int *)(puVar16 + 4);
}
uVar7 = *(uint *)(iVar11 + 0x3edc);
if (((uVar7 == 0xffffffff) ||
(puVar16 = g_pEntityList + (uVar7 & 0xfff) * 0x10, puVar16 == (undefined *)0xfffffffc)) ||
(*(uint *)(puVar16 + 8) != uVar7 >> 0xc)) {
iVar10 = 0;
}
else {
iVar10 = *(int *)(puVar16 + 4);
}
if (local_44 == iVar10) {
CVar9 = param_2[0x14d];
}
else {
if (*(char *)(iVar11 + 0x6c) == '\0') {
pCVar4 = *(CBaseEdict **)(iVar11 + 0x30);
if (pCVar4 != (CBaseEdict *)0x0) {
*(uint *)pCVar4 = *(uint *)pCVar4 | 0x101;
iVar10 = CBaseEdict::GetChangeAccessor(pCVar4);
*(undefined2 *)(iVar10 + 2) = 0;
}
}
else {
*(byte *)(iVar11 + 0x70) = *(byte *)(iVar11 + 0x70) | 1;
}
*(uint *)(iVar11 + 0x3edc) = uVar5;
CVar9 = param_2[0x14d];
}
if (((byte)CVar9 & 8) != 0) {
CBaseEntity::CalcAbsolutePosition((CBaseEntity *)param_2);
}
CBaseEntity::SetAbsOrigin(*(CBaseEntity **)(this + 0x204),(Vector *)(param_2 + 0x2e0));
(**(code **)(**(int **)(this + 0x204) + 0x98))(*(int **)(this + 0x204),param_2,0xffffffff);
CBaseEntity::SetMoveType(*(CBaseEntity **)(this + 0x204),0,0);
(**(code **)(**(int **)(param_2 + 0x2910) + 4))(*(int **)(param_2 + 0x2910),0x55,0);
}
CHandle<CTerrorPlayer>::CHandle
((CHandle<CTerrorPlayer> *)local_30,*(CTerrorPlayer **)(this + 0x1d8));
if (((local_30[0] == 0xffffffff) ||
(puVar16 = g_pEntityList + (local_30[0] & 0xfff) * 0x10, puVar16 == (undefined *)0xfffffffc))
|| (*(uint *)(puVar16 + 8) != local_30[0] >> 0xc)) {
iVar11 = 0;
}
else {
iVar11 = *(int *)(puVar16 + 4);
}
uVar5 = *(uint *)(param_2 + 0x33c4);
if (((uVar5 == 0xffffffff) ||
(puVar16 = g_pEntityList + (uVar5 & 0xfff) * 0x10, puVar16 == (undefined *)0xfffffffc)) ||
(*(uint *)(puVar16 + 8) != uVar5 >> 0xc)) {
iVar10 = 0;
}
else {
iVar10 = *(int *)(puVar16 + 4);
}
if (iVar11 != iVar10) {
if (param_2[0x6c] == (CTerrorPlayer)0x0) {
pCVar4 = *(CBaseEdict **)(param_2 + 0x30);
if (pCVar4 != (CBaseEdict *)0x0) {
*(uint *)pCVar4 = *(uint *)pCVar4 | 0x101;
iVar11 = CBaseEdict::GetChangeAccessor(pCVar4);
*(undefined2 *)(iVar11 + 2) = 0;
}
}
else {
param_2[0x70] = (CTerrorPlayer)((byte)param_2[0x70] | 1);
}
*(uint *)(param_2 + 0x33c4) = local_30[0];
}
iVar11 = *(int *)(this + 0x1d8);
if (iVar11 != 0) {
CHandle<CTerrorPlayer>::CHandle((CHandle<CTerrorPlayer> *)local_30,param_2);
local_40 = g_pEntityList;
if (((local_30[0] == 0xffffffff) ||
(puVar16 = g_pEntityList + (local_30[0] & 0xfff) * 0x10, puVar16 == (undefined *)0xfffffffc)
) || (*(uint *)(puVar16 + 8) != local_30[0] >> 0xc)) {
local_44 = 0;
}
else {
local_44 = *(int *)(puVar16 + 4);
}
uVar5 = *(uint *)(iVar11 + 0x33c0);
if (((uVar5 == 0xffffffff) ||
(puVar16 = g_pEntityList + (uVar5 & 0xfff) * 0x10, puVar16 == (undefined *)0xfffffffc)) ||
(*(uint *)(puVar16 + 8) != uVar5 >> 0xc)) {
iVar10 = 0;
}
else {
iVar10 = *(int *)(puVar16 + 4);
}
if (local_44 != iVar10) {
if (*(char *)(iVar11 + 0x6c) == '\0') {
pCVar4 = *(CBaseEdict **)(iVar11 + 0x30);
if (pCVar4 != (CBaseEdict *)0x0) {
*(uint *)pCVar4 = *(uint *)pCVar4 | 0x101;
iVar10 = CBaseEdict::GetChangeAccessor(pCVar4);
*(undefined2 *)(iVar10 + 2) = 0;
local_40 = g_pEntityList;
}
}
else {
*(byte *)(iVar11 + 0x70) = *(byte *)(iVar11 + 0x70) | 1;
}
*(uint *)(iVar11 + 0x33c0) = local_30[0];
}
uVar5 = *(uint *)(*(int *)(this + 0x1d8) + 0x30bc);
if (((uVar5 != 0xffffffff) &&
(puVar16 = local_40 + (uVar5 & 0xfff) * 0x10, puVar16 != (undefined *)0xfffffffc)) &&
((*(uint *)(puVar16 + 8) == uVar5 >> 0xc &&
((*(int *)(puVar16 + 4) != 0 &&
(iVar11 = __dynamic_cast(*(int *)(puVar16 + 4),&CBaseAbility::typeinfo,&CTongue::typeinfo,0
), iVar11 != 0)))))) {
uVar5 = *(uint *)(iVar11 + 0x47c);
pCVar17 = (CTerrorPlayer *)0x0;
if ((uVar5 != 0xffffffff) &&
((puVar16 = local_40 + (uVar5 & 0xfff) * 0x10, puVar16 != (undefined *)0xfffffffc &&
(*(uint *)(puVar16 + 8) == uVar5 >> 0xc)))) {
pCVar17 = *(CTerrorPlayer **)(puVar16 + 4);
}
if (param_1 == pCVar17) {
CHandle<CTerrorPlayer>::CHandle((CHandle<CTerrorPlayer> *)local_30,param_2);
local_40 = g_pEntityList;
if (((local_30[0] == 0xffffffff) ||
(puVar16 = g_pEntityList + (local_30[0] & 0xfff) * 0x10,
puVar16 == (undefined *)0xfffffffc)) || (*(uint *)(puVar16 + 8) != local_30[0] >> 0xc))
{
iVar10 = 0;
}
else {
iVar10 = *(int *)(puVar16 + 4);
}
uVar5 = *(uint *)(iVar11 + 0x47c);
if (((uVar5 == 0xffffffff) ||
(puVar16 = g_pEntityList + (uVar5 & 0xfff) * 0x10, puVar16 == (undefined *)0xfffffffc))
|| (*(uint *)(puVar16 + 8) != uVar5 >> 0xc)) {
iVar15 = 0;
}
else {
iVar15 = *(int *)(puVar16 + 4);
}
if (iVar10 != iVar15) {
if (*(char *)(iVar11 + 0x6c) == '\0') {
pCVar4 = *(CBaseEdict **)(iVar11 + 0x30);
if (pCVar4 != (CBaseEdict *)0x0) {
*(uint *)pCVar4 = *(uint *)pCVar4 | 0x101;
iVar10 = CBaseEdict::GetChangeAccessor(pCVar4);
*(undefined2 *)(iVar10 + 2) = 0;
local_40 = g_pEntityList;
}
}
else {
*(byte *)(iVar11 + 0x70) = *(byte *)(iVar11 + 0x70) | 1;
}
*(uint *)(iVar11 + 0x47c) = local_30[0];
}
}
pCVar17 = (CTerrorPlayer *)0x0;
uVar5 = *(uint *)(iVar11 + 0x480);
if (((uVar5 != 0xffffffff) &&
(local_40 = local_40 + (uVar5 & 0xfff) * 0x10, local_40 != (undefined *)0xfffffffc)) &&
(*(uint *)(local_40 + 8) == uVar5 >> 0xc)) {
pCVar17 = *(CTerrorPlayer **)(local_40 + 4);
}
if (param_1 == pCVar17) {
CHandle<CTerrorPlayer>::CHandle((CHandle<CTerrorPlayer> *)local_30,param_2);
if (((local_30[0] == 0xffffffff) ||
(puVar16 = g_pEntityList + (local_30[0] & 0xfff) * 0x10,
puVar16 == (undefined *)0xfffffffc)) || (*(uint *)(puVar16 + 8) != local_30[0] >> 0xc))
{
iVar10 = 0;
}
else {
iVar10 = *(int *)(puVar16 + 4);
}
uVar5 = *(uint *)(iVar11 + 0x480);
if (((uVar5 == 0xffffffff) ||
(puVar16 = g_pEntityList + (uVar5 & 0xfff) * 0x10, puVar16 == (undefined *)0xfffffffc))
|| (*(uint *)(puVar16 + 8) != uVar5 >> 0xc)) {
iVar15 = 0;
}
else {
iVar15 = *(int *)(puVar16 + 4);
}
if (iVar10 != iVar15) {
if (*(char *)(iVar11 + 0x6c) == '\0') {
pCVar4 = *(CBaseEdict **)(iVar11 + 0x30);
if (pCVar4 != (CBaseEdict *)0x0) {
*(uint *)pCVar4 = *(uint *)pCVar4 | 0x101;
iVar10 = CBaseEdict::GetChangeAccessor(pCVar4);
*(undefined2 *)(iVar10 + 2) = 0;
}
}
else {
*(byte *)(iVar11 + 0x70) = *(byte *)(iVar11 + 0x70) | 1;
}
*(uint *)(iVar11 + 0x480) = local_30[0];
}
}
}
(**(code **)(*(int *)param_2 + 0x7fc))(param_2,0x5c,0);
}
*(undefined4 *)(param_2 + 0x33cc) = *(undefined4 *)(this + 0x1e0);
(*(code *)**(undefined4 **)(param_2 + 0x33c8))(param_2 + 0x33c8);
SVar3 = this[0x1e4];
if (SVar3 != *(SurvivorReplacement *)(param_2 + 0x33dc)) {
if (param_2[0x6c] == (CTerrorPlayer)0x0) {
pCVar4 = *(CBaseEdict **)(param_2 + 0x30);
if (pCVar4 != (CBaseEdict *)0x0) {
*(uint *)pCVar4 = *(uint *)pCVar4 | 0x101;
iVar11 = CBaseEdict::GetChangeAccessor(pCVar4);
*(undefined2 *)(iVar11 + 2) = 0;
}
}
else {
param_2[0x70] = (CTerrorPlayer)((byte)param_2[0x70] | 1);
}
*(SurvivorReplacement *)(param_2 + 0x33dc) = SVar3;
}
SVar3 = this[0x1e5];
if (SVar3 != *(SurvivorReplacement *)(param_2 + 0x33dd)) {
if (param_2[0x6c] == (CTerrorPlayer)0x0) {
pCVar4 = *(CBaseEdict **)(param_2 + 0x30);
if (pCVar4 != (CBaseEdict *)0x0) {
*(uint *)pCVar4 = *(uint *)pCVar4 | 0x101;
iVar11 = CBaseEdict::GetChangeAccessor(pCVar4);
*(undefined2 *)(iVar11 + 2) = 0;
}
}
else {
param_2[0x70] = (CTerrorPlayer)((byte)param_2[0x70] | 1);
}
*(SurvivorReplacement *)(param_2 + 0x33dd) = SVar3;
}
SVar3 = this[0x1e6];
if (SVar3 != *(SurvivorReplacement *)(param_2 + 0x33e4)) {
if (param_2[0x6c] == (CTerrorPlayer)0x0) {
pCVar4 = *(CBaseEdict **)(param_2 + 0x30);
if (pCVar4 != (CBaseEdict *)0x0) {
*(uint *)pCVar4 = *(uint *)pCVar4 | 0x101;
iVar11 = CBaseEdict::GetChangeAccessor(pCVar4);
*(undefined2 *)(iVar11 + 2) = 0;
}
}
else {
param_2[0x70] = (CTerrorPlayer)((byte)param_2[0x70] | 1);
}
*(SurvivorReplacement *)(param_2 + 0x33e4) = SVar3;
}
*(undefined4 *)(param_2 + 0x33e0) = *(undefined4 *)(this + 0x1e8);
*(undefined4 *)(param_2 + 0x33f0) = *(undefined4 *)(this + 500);
*(undefined4 *)(param_2 + 0x33ec) = *(undefined4 *)(this + 0x1f0);
*(undefined4 *)(param_2 + 0x33f8) = *(undefined4 *)(this + 0x1fc);
if (*(int *)(param_2 + 0x3110) != 0) {
*(SurvivorReplacement *)(*(int *)(param_2 + 0x3110) + 0x120) = this[0x200];
}
uVar5 = *(uint *)(this + 0x20c);
pCVar19 = (CBaseEntity *)0x0;
if (((uVar5 != 0xffffffff) &&
(puVar16 = g_pEntityList + (uVar5 & 0xfff) * 0x10, puVar16 != (undefined *)0xfffffffc)) &&
((*(uint *)(puVar16 + 8) == uVar5 >> 0xc &&
((this_00 = *(CBaseEntity **)(puVar16 + 4), pCVar19 = this_00, this_00 != (CBaseEntity *)0x0
&& (pCVar19 = (CBaseEntity *)param_2, param_1 != (CTerrorPlayer *)this_00)))))) {
if ((*(char **)(this_00 + 0x7c) == "point_deathfall_camera") ||
((((cVar8 = CBaseEntity::ClassMatchesComplex(this_00,"point_deathfall_camera"), cVar8 != '\0'
|| (*(char **)(this_00 + 0x7c) == "point_viewcontrol_survivor")) ||
(cVar8 = CBaseEntity::ClassMatchesComplex(this_00,"point_viewcontrol_survivor"),
cVar8 != '\0')) ||
((*(char **)(this_00 + 0x7c) == "point_viewcontrol" ||
(cVar8 = CBaseEntity::ClassMatchesComplex(this_00,"point_viewcontrol"), cVar8 != '\0'))))))
{
local_30[0] = 0;
local_24 = 0xffffffff;
local_20 = 0;
(**(code **)(*(int *)this_00 + 0xb4))(this_00,"Disable",param_1,0,local_30,0);
local_30[0] = 0;
local_24 = 0xffffffff;
local_20 = 0;
(**(code **)(*(int *)this_00 + 0xb4))(this_00,"Enable",param_2,0,local_30,0);
pCVar19 = this_00;
}
else if ((*(char **)(this_00 + 0x7c) == "point_viewcontrol_multiplayer") ||
(cVar8 = CBaseEntity::ClassMatchesComplex(this_00,"point_viewcontrol_multiplayer"),
pCVar19 = this_00, cVar8 != '\0')) {
local_30[0] = 0;
local_24 = 0xffffffff;
local_20 = 0;
(**(code **)(*(int *)this_00 + 0xb4))(this_00,"RemovePlayer",param_1,0,local_30,0);
local_30[0] = 0;
local_24 = 0xffffffff;
local_20 = 0;
(**(code **)(*(int *)this_00 + 0xb4))(this_00,"AddPlayer",param_2,0,local_30,0);
pCVar19 = this_00;
}
}
CBasePlayer::SetViewEntity((CBasePlayer *)param_2,pCVar19);
uVar5 = *(uint *)(this + 0x210);
if ((((uVar5 != 0xffffffff) &&
(puVar16 = g_pEntityList + (uVar5 & 0xfff) * 0x10, puVar16 != (undefined *)0xfffffffc)) &&
(*(uint *)(puVar16 + 8) == uVar5 >> 0xc)) && (*(int *)(puVar16 + 4) != 0)) {
pCVar14 = (CSurvivorPosition *)
__dynamic_cast(*(int *)(puVar16 + 4),&CBaseEntity::typeinfo,
&CSurvivorPosition::typeinfo,0);
CTerrorPlayer::SetPlayerPositionEntity(param_2,pCVar14);
}
if (0 < *(int *)(this + 0x220)) {
iVar11 = 0;
do {
piVar6 = *(int **)(*(int *)(this + 0x214) + iVar11 * 4);
iVar11 = iVar11 + 1;
(**(code **)(*piVar6 + 0x64c))(piVar6,param_2);
} while (iVar11 < *(int *)(this + 0x220));
}
(**(code **)(*(int *)param_2 + 0x538))(param_2);
pCVar17 = param_2;
(**(code **)(*(int *)param_2 + 0x5b8))();
if (param_2[0x39f1] == (CTerrorPlayer)0x0) {
CTerrorPlayer::WarpToValidPositionIfStuck(pCVar17);
}
if (this[0x34] != (SurvivorReplacement)0x0) {
(**(code **)(*(int *)(param_2 + 0x3ab4) + 0x150))(param_2 + 0x3ab4,param_1);
}
if (*(int *)(this + 0x208) == 0) {
CBasePlayer::UnlockPlayer((CBasePlayer *)param_2);
}
else {
CBasePlayer::LockPlayerInPlace((CBasePlayer *)param_2);
}
if (*(float *)(this + 0x54) != -NAN) {
CTerrorPlayerAnimState::SetCustomSequence(*(int *)(param_2 + 0x2910),*(float *)(this + 0x54));
}
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.