CTerrorPlayer::Spawn
0x009d2c30 · 13521 bytes · __thiscall
_ZN13CTerrorPlayer5SpawnEv
Decompiled
undefined (1 param)
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
/* CTerrorPlayer::Spawn() */
void __thiscall CTerrorPlayer::Spawn(CTerrorPlayer *this)
{
uint *puVar1;
uint uVar2;
CBaseEdict *pCVar3;
code *pcVar4;
float fVar5;
int *piVar6;
int iVar7;
int iVar8;
char cVar9;
CTerrorPlayer CVar10;
undefined4 uVar11;
undefined *puVar12;
int iVar13;
undefined *puVar14;
CBasePlayer *pCVar15;
CTerrorPlayer *pCVar16;
undefined4 *puVar17;
int *piVar18;
float *pfVar19;
CAmmoDef *this_00;
undefined4 uVar20;
int iVar21;
undefined *puVar22;
int iVar23;
int iVar24;
CTerrorPlayer *pCVar25;
float fVar26;
byte bVar27;
longdouble lVar28;
float fVar29;
float local_7c;
int local_6c;
int local_64;
int local_58;
undefined4 local_54;
undefined4 local_50;
undefined4 local_48;
undefined4 local_44;
int local_40;
CRecipientFilter local_3c [44];
piVar6 = mdlcache;
bVar27 = 0;
(**(code **)(*mdlcache + 0x68))(mdlcache);
local_54 = 0;
local_50 = 0;
if (_towlower == 0) {
local_40 = 0;
}
else {
/* try { // try from 009d2cc6 to 009d2cc8 has its CatchHandler @ 009d614c */
(**(code **)(_towlower + 0x50))
(_towlower,&local_54,0,0,0,0,"/data/src/game/server/terror/terrorplayer.cpp",0xf04,
&Spawn()::tm_fmt,"(%s)%s","ZOMBIE","CCSPlayer::Spawn");
local_40 = _towlower;
}
iVar23 = _DAT_0105db00;
local_48 = local_54;
local_44 = local_50;
/* try { // try from 009d40ee to 009d414e has its CatchHandler @ 009d6192 */
if (((_DAT_0105d154 != 0) || (DAT_0105d158 == '\0')) &&
(iVar13 = ThreadGetCurrentId(), iVar23 == iVar13)) {
if ((char *)*_DAT_0105d15c != "CCSPlayer::Spawn") {
_DAT_0105d15c =
(int *)CVProfNode::GetSubNode((char *)_DAT_0105d15c,0xd15c96,(char *)0x0,0xc0db47);
}
puVar1 = (uint *)(_DAT_0105d1e8 + 4 + _DAT_0105d15c[0x1c] * 8);
*puVar1 = *puVar1 | 4;
CVProfNode::EnterScope();
DAT_0105d158 = '\0';
}
/* try { // try from 009d2d04 to 009d3bb0 has its CatchHandler @ 009d6196 */
CBaseEntity::SetGlobalFadeScale((CBaseEntity *)this,0.0);
*(float *)(this + 0x3fb8) =
*(float *)(sv_spectatoridletime._28_4_ + 0x2c) * 60.0 + *(float *)(gpGlobals + 0xc);
if (*(int *)(this + 0x2e20) != 0) {
KeyValues::deleteThis();
*(undefined4 *)(this + 0x2e20) = 0;
}
if (this[0x2ca5] == (CTerrorPlayer)0x0) {
iVar23 = 0;
do {
iVar13 = iVar23 + 0x2f78;
iVar23 = iVar23 + 0x34;
pCVar25 = this + iVar13;
for (iVar21 = 0xd; iVar21 != 0; iVar21 = iVar21 + -1) {
*(undefined4 *)pCVar25 = 0;
pCVar25 = pCVar25 + (uint)bVar27 * -8 + 4;
}
} while (iVar23 != 0x104);
}
(**(code **)(*(int *)this + 0x580))(this,"specgui",0,0);
uVar11 = RandomInt(*(undefined4 *)(BoomerShoveMin._28_4_ + 0x30),
*(undefined4 *)(BoomerShoveMax._28_4_ + 0x30));
*(undefined4 *)(this + 0x337c) = uVar11;
if (*(float *)(this + 0x3f18) != 0.0) {
if (this[0x6c] == (CTerrorPlayer)0x0) {
pCVar3 = *(CBaseEdict **)(this + 0x30);
if (pCVar3 != (CBaseEdict *)0x0) {
*(uint *)pCVar3 = *(uint *)pCVar3 | 0x101;
iVar23 = CBaseEdict::GetChangeAccessor(pCVar3);
*(undefined2 *)(iVar23 + 2) = 0;
}
}
else {
this[0x70] = (CTerrorPlayer)((byte)this[0x70] | 1);
}
*(undefined4 *)(this + 0x3f18) = 0;
}
if (*(float *)(this + 0x3f1c) != 0.0) {
if (this[0x6c] == (CTerrorPlayer)0x0) {
pCVar3 = *(CBaseEdict **)(this + 0x30);
if (pCVar3 != (CBaseEdict *)0x0) {
*(uint *)pCVar3 = *(uint *)pCVar3 | 0x101;
iVar23 = CBaseEdict::GetChangeAccessor(pCVar3);
*(undefined2 *)(iVar23 + 2) = 0;
}
}
else {
this[0x70] = (CTerrorPlayer)((byte)this[0x70] | 1);
}
*(undefined4 *)(this + 0x3f1c) = 0;
}
if (*(float *)(this + 0x3f20) != 0.0) {
if (this[0x6c] == (CTerrorPlayer)0x0) {
pCVar3 = *(CBaseEdict **)(this + 0x30);
if (pCVar3 != (CBaseEdict *)0x0) {
*(uint *)pCVar3 = *(uint *)pCVar3 | 0x101;
iVar23 = CBaseEdict::GetChangeAccessor(pCVar3);
*(undefined2 *)(iVar23 + 2) = 0;
}
}
else {
this[0x70] = (CTerrorPlayer)((byte)this[0x70] | 1);
}
*(undefined4 *)(this + 0x3f20) = 0;
}
if (*(float *)(this + 0x3f24) != 0.0) {
if (this[0x6c] == (CTerrorPlayer)0x0) {
pCVar3 = *(CBaseEdict **)(this + 0x30);
if (pCVar3 != (CBaseEdict *)0x0) {
*(uint *)pCVar3 = *(uint *)pCVar3 | 0x101;
iVar23 = CBaseEdict::GetChangeAccessor(pCVar3);
*(undefined2 *)(iVar23 + 2) = 0;
}
}
else {
this[0x70] = (CTerrorPlayer)((byte)this[0x70] | 1);
}
*(undefined4 *)(this + 0x3f24) = 0;
}
*(undefined4 *)(this + 0x3f58) = 0;
*(undefined4 *)(this + 0x2b90) = 0;
*(undefined4 *)(this + 0x2b94) = 0;
*(undefined4 *)(this + 0x2b98) = 0;
*(undefined4 *)(this + 0x2b9c) = 0;
*(undefined4 *)(this + 0x30f4) = 0;
if (*(float *)(this + 0x3108) != -1.0) {
(**(code **)(*(int *)(this + 0x3104) + 4))(this + 0x3104,this + 0x3108);
*(undefined4 *)(this + 0x3108) = 0xbf800000;
}
pCVar25 = this + 0x3f84;
if (*(float *)(this + 0x3f8c) != -1.0) {
(**(code **)(*(int *)(this + 0x3f84) + 4))(pCVar25,this + 0x3f8c);
*(undefined4 *)(this + 0x3f8c) = 0xbf800000;
}
*(undefined4 *)(this + 0x310c) = 0;
if (*(float *)(this + 0x2b5c) != 0.0) {
if (this[0x6c] == (CTerrorPlayer)0x0) {
pCVar3 = *(CBaseEdict **)(this + 0x30);
if (pCVar3 != (CBaseEdict *)0x0) {
*(uint *)pCVar3 = *(uint *)pCVar3 | 0x101;
iVar23 = CBaseEdict::GetChangeAccessor(pCVar3);
*(undefined2 *)(iVar23 + 2) = 0;
}
}
else {
this[0x70] = (CTerrorPlayer)((byte)this[0x70] | 1);
}
*(undefined4 *)(this + 0x2b5c) = 0;
}
if (*(float *)(this + 0x2b60) != 1.0) {
if (this[0x6c] == (CTerrorPlayer)0x0) {
pCVar3 = *(CBaseEdict **)(this + 0x30);
if (pCVar3 != (CBaseEdict *)0x0) {
*(uint *)pCVar3 = *(uint *)pCVar3 | 0x101;
iVar23 = CBaseEdict::GetChangeAccessor(pCVar3);
*(undefined2 *)(iVar23 + 2) = 0;
}
}
else {
this[0x70] = (CTerrorPlayer)((byte)this[0x70] | 1);
}
*(undefined4 *)(this + 0x2b60) = 0x3f800000;
}
if (*(int *)(this + 0x330c) != 0) {
if (this[0x6c] == (CTerrorPlayer)0x0) {
pCVar3 = *(CBaseEdict **)(this + 0x30);
if (pCVar3 != (CBaseEdict *)0x0) {
*(uint *)pCVar3 = *(uint *)pCVar3 | 0x101;
iVar23 = CBaseEdict::GetChangeAccessor(pCVar3);
*(undefined2 *)(iVar23 + 2) = 0;
}
}
else {
this[0x70] = (CTerrorPlayer)((byte)this[0x70] | 1);
}
*(undefined4 *)(this + 0x330c) = 0;
}
if (*(float *)(this + 0x3f54) != -1.0) {
(**(code **)(*(int *)(this + 0x3f4c) + 4))(this + 0x3f4c,this + 0x3f54);
*(undefined4 *)(this + 0x3f54) = 0xbf800000;
}
*(undefined4 *)(this + 0x2d60) = 0xffffffff;
if ((g_pEntityList == (undefined *)0xfffffffc) || (*(int *)(g_pEntityList + 8) != 0)) {
iVar23 = 0;
}
else {
iVar23 = *(int *)(g_pEntityList + 4);
}
uVar2 = *(uint *)(this + 0x2d64);
if (((uVar2 == 0xffffffff) ||
(puVar12 = g_pEntityList + (uVar2 & 0xfff) * 0x10, puVar12 == (undefined *)0xfffffffc)) ||
(*(uint *)(puVar12 + 8) != uVar2 >> 0xc)) {
iVar13 = 0;
}
else {
iVar13 = *(int *)(puVar12 + 4);
}
if (iVar23 != iVar13) {
if (this[0x6c] == (CTerrorPlayer)0x0) {
pCVar3 = *(CBaseEdict **)(this + 0x30);
if (pCVar3 != (CBaseEdict *)0x0) {
*(uint *)pCVar3 = *(uint *)pCVar3 | 0x101;
iVar23 = CBaseEdict::GetChangeAccessor(pCVar3);
*(undefined2 *)(iVar23 + 2) = 0;
}
}
else {
this[0x70] = (CTerrorPlayer)((byte)this[0x70] | 1);
}
*(undefined4 *)(this + 0x2d64) = 0;
}
*(undefined4 *)(this + 0x2d68) = 0xffffffff;
*(undefined4 *)(this + 0x2d88) = 0;
*(undefined4 *)(this + 0x2d8c) = 0;
*(undefined4 *)(this + 0x2d90) = 0;
this[0x3f48] = (CTerrorPlayer)0x0;
if (this[0x2d94] != (CTerrorPlayer)0x0) {
if (this[0x6c] == (CTerrorPlayer)0x0) {
pCVar3 = *(CBaseEdict **)(this + 0x30);
if (pCVar3 != (CBaseEdict *)0x0) {
*(uint *)pCVar3 = *(uint *)pCVar3 | 0x101;
iVar23 = CBaseEdict::GetChangeAccessor(pCVar3);
*(undefined2 *)(iVar23 + 2) = 0;
}
}
else {
this[0x70] = (CTerrorPlayer)((byte)this[0x70] | 1);
}
this[0x2d94] = (CTerrorPlayer)0x0;
}
*(undefined4 *)(this + 0x2da8) = 0xffffffff;
if (*(float *)(this + 0x2db0) != -1.0) {
(**(code **)(*(int *)(this + 0x2dac) + 4))(this + 0x2dac,this + 0x2db0);
*(undefined4 *)(this + 0x2db0) = 0xbf800000;
}
if (*(float *)(this + 0x2dbc) != -1.0) {
(**(code **)(*(int *)(this + 0x2db4) + 4))(this + 0x2db4,this + 0x2dbc);
*(undefined4 *)(this + 0x2dbc) = 0xbf800000;
}
if (*(float *)(this + 0x2e68) != -1.0) {
(**(code **)(*(int *)(this + 0x2e60) + 4))(this + 0x2e60,this + 0x2e68);
*(undefined4 *)(this + 0x2e68) = 0xbf800000;
}
if (*(float *)(this + 0x2e74) != -1.0) {
(**(code **)(*(int *)(this + 0x2e6c) + 4))(this + 0x2e6c,this + 0x2e74);
*(undefined4 *)(this + 0x2e74) = 0xbf800000;
}
if ((g_pEntityList == (undefined *)0xfffffffc) || (*(int *)(g_pEntityList + 8) != 0)) {
iVar23 = 0;
}
else {
iVar23 = *(int *)(g_pEntityList + 4);
}
uVar2 = *(uint *)(this + 0x33a4);
if (((uVar2 == 0xffffffff) ||
(puVar12 = g_pEntityList + (uVar2 & 0xfff) * 0x10, puVar12 == (undefined *)0xfffffffc)) ||
(*(uint *)(puVar12 + 8) != uVar2 >> 0xc)) {
iVar13 = 0;
}
else {
iVar13 = *(int *)(puVar12 + 4);
}
if (iVar23 != iVar13) {
if (this[0x6c] == (CTerrorPlayer)0x0) {
pCVar3 = *(CBaseEdict **)(this + 0x30);
if (pCVar3 != (CBaseEdict *)0x0) {
*(uint *)pCVar3 = *(uint *)pCVar3 | 0x101;
iVar23 = CBaseEdict::GetChangeAccessor(pCVar3);
*(undefined2 *)(iVar23 + 2) = 0;
}
}
else {
this[0x70] = (CTerrorPlayer)((byte)this[0x70] | 1);
}
*(undefined4 *)(this + 0x33a4) = 0;
}
if (this[0x2e78] != (CTerrorPlayer)0x0) {
if (this[0x6c] == (CTerrorPlayer)0x0) {
pCVar3 = *(CBaseEdict **)(this + 0x30);
if (pCVar3 != (CBaseEdict *)0x0) {
*(uint *)pCVar3 = *(uint *)pCVar3 | 0x101;
iVar23 = CBaseEdict::GetChangeAccessor(pCVar3);
*(undefined2 *)(iVar23 + 2) = 0;
}
}
else {
this[0x70] = (CTerrorPlayer)((byte)this[0x70] | 1);
}
this[0x2e78] = (CTerrorPlayer)0x0;
}
if (*(float *)(this + 0x2e84) != -1.0) {
(**(code **)(*(int *)(this + 0x2e7c) + 4))(this + 0x2e7c,this + 0x2e84);
*(undefined4 *)(this + 0x2e84) = 0xbf800000;
}
*(undefined4 *)(this + 0x2d98) = 0;
puVar14 = g_pEntityList;
puVar12 = g_pEntityList + 4;
if ((puVar12 == (undefined *)0x0) || (*(int *)(g_pEntityList + 8) != 0)) {
iVar23 = 0;
}
else {
iVar23 = *(int *)(g_pEntityList + 4);
}
uVar2 = *(uint *)(this + 0x2e24);
if (((uVar2 == 0xffffffff) ||
(puVar22 = g_pEntityList + (uVar2 & 0xfff) * 0x10, puVar22 == (undefined *)0xfffffffc)) ||
(*(uint *)(puVar22 + 8) != uVar2 >> 0xc)) {
iVar13 = 0;
}
else {
iVar13 = *(int *)(puVar22 + 4);
}
if (iVar23 != iVar13) {
if (this[0x6c] == (CTerrorPlayer)0x0) {
pCVar3 = *(CBaseEdict **)(this + 0x30);
if (pCVar3 != (CBaseEdict *)0x0) {
*(uint *)pCVar3 = *(uint *)pCVar3 | 0x101;
iVar23 = CBaseEdict::GetChangeAccessor(pCVar3);
*(undefined2 *)(iVar23 + 2) = 0;
puVar12 = g_pEntityList + 4;
puVar14 = g_pEntityList;
}
}
else {
this[0x70] = (CTerrorPlayer)((byte)this[0x70] | 1);
}
*(undefined4 *)(this + 0x2e24) = 0;
}
if ((puVar12 == (undefined *)0x0) || (*(int *)(puVar14 + 8) != 0)) {
iVar23 = 0;
}
else {
iVar23 = *(int *)(puVar14 + 4);
}
uVar2 = *(uint *)(this + 0x2e28);
if (((uVar2 == 0xffffffff) ||
(puVar14 = puVar14 + (uVar2 & 0xfff) * 0x10, puVar14 == (undefined *)0xfffffffc)) ||
(*(uint *)(puVar14 + 8) != uVar2 >> 0xc)) {
iVar13 = 0;
}
else {
iVar13 = *(int *)(puVar14 + 4);
}
if (iVar23 == iVar13) {
iVar23 = *(int *)(this + 0x2e54);
}
else {
if (this[0x6c] == (CTerrorPlayer)0x0) {
pCVar3 = *(CBaseEdict **)(this + 0x30);
if (pCVar3 != (CBaseEdict *)0x0) {
*(uint *)pCVar3 = *(uint *)pCVar3 | 0x101;
iVar23 = CBaseEdict::GetChangeAccessor(pCVar3);
*(undefined2 *)(iVar23 + 2) = 0;
}
}
else {
this[0x70] = (CTerrorPlayer)((byte)this[0x70] | 1);
}
*(undefined4 *)(this + 0x2e28) = 0;
iVar23 = *(int *)(this + 0x2e54);
}
if (iVar23 != 0) {
if (this[0x6c] == (CTerrorPlayer)0x0) {
pCVar3 = *(CBaseEdict **)(this + 0x30);
if (pCVar3 != (CBaseEdict *)0x0) {
*(uint *)pCVar3 = *(uint *)pCVar3 | 0x101;
iVar23 = CBaseEdict::GetChangeAccessor(pCVar3);
*(undefined2 *)(iVar23 + 2) = 0;
}
}
else {
this[0x70] = (CTerrorPlayer)((byte)this[0x70] | 1);
}
*(undefined4 *)(this + 0x2e54) = 0;
}
*(undefined4 *)(this + 0x2e5c) = 0;
if (this[0x2e58] != (CTerrorPlayer)0x0) {
if (this[0x6c] == (CTerrorPlayer)0x0) {
pCVar3 = *(CBaseEdict **)(this + 0x30);
if (pCVar3 != (CBaseEdict *)0x0) {
*(uint *)pCVar3 = *(uint *)pCVar3 | 0x101;
iVar23 = CBaseEdict::GetChangeAccessor(pCVar3);
*(undefined2 *)(iVar23 + 2) = 0;
}
}
else {
this[0x70] = (CTerrorPlayer)((byte)this[0x70] | 1);
}
this[0x2e58] = (CTerrorPlayer)0x0;
}
if (this[0x2e59] != (CTerrorPlayer)0x0) {
if (this[0x6c] == (CTerrorPlayer)0x0) {
pCVar3 = *(CBaseEdict **)(this + 0x30);
if (pCVar3 != (CBaseEdict *)0x0) {
*(uint *)pCVar3 = *(uint *)pCVar3 | 0x101;
iVar23 = CBaseEdict::GetChangeAccessor(pCVar3);
*(undefined2 *)(iVar23 + 2) = 0;
}
}
else {
this[0x70] = (CTerrorPlayer)((byte)this[0x70] | 1);
}
this[0x2e59] = (CTerrorPlayer)0x0;
}
*(code **)(this + 0xe0) = OnPlayerUse;
*(undefined4 *)(this + 0xe4) = 0;
if (*(float *)(this + 0x3260) != -1.0) {
(**(code **)(*(int *)(this + 0x3258) + 4))(this + 0x3258,this + 0x3260);
*(undefined4 *)(this + 0x3260) = 0xbf800000;
}
this[0x3268] = (CTerrorPlayer)0x0;
this[0x3269] = (CTerrorPlayer)0x0;
this[0x326a] = (CTerrorPlayer)0x0;
if (*(float *)(this + 0x3274) != -1.0) {
(**(code **)(*(int *)(this + 0x326c) + 4))(this + 0x326c,this + 0x3274);
*(undefined4 *)(this + 0x3274) = 0xbf800000;
}
if (this[0x3278] != (CTerrorPlayer)0x0) {
if (this[0x6c] == (CTerrorPlayer)0x0) {
pCVar3 = *(CBaseEdict **)(this + 0x30);
if (pCVar3 != (CBaseEdict *)0x0) {
*(uint *)pCVar3 = *(uint *)pCVar3 | 0x101;
iVar23 = CBaseEdict::GetChangeAccessor(pCVar3);
*(undefined2 *)(iVar23 + 2) = 0;
}
}
else {
this[0x70] = (CTerrorPlayer)((byte)this[0x70] | 1);
}
this[0x3278] = (CTerrorPlayer)0x0;
}
if (*(float *)(this + 0x3e60) != -1.0) {
(**(code **)(*(int *)(this + 0x3e58) + 4))(this + 0x3e58,this + 0x3e60);
*(undefined4 *)(this + 0x3e60) = 0xbf800000;
}
if (*(float *)(this + 0x3188) != -1.0) {
(**(code **)(*(int *)(this + 0x3184) + 4))(this + 0x3184,this + 0x3188);
*(undefined4 *)(this + 0x3188) = 0xbf800000;
}
if (*(float *)(this + 0x3190) != -1.0) {
/* try { // try from 009d4bd2 to 009d4cc0 has its CatchHandler @ 009d6196 */
(**(code **)(*(int *)(this + 0x318c) + 4))(this + 0x318c,this + 0x3190);
*(undefined4 *)(this + 0x3190) = 0xbf800000;
}
*(undefined4 *)(this + 0x3194) = 0;
*(undefined4 *)(this + 0x3198) = 0;
*(undefined4 *)(this + 0x319c) = 0;
*(undefined4 *)(this + 0x31a0) = 0;
*(undefined4 *)(this + 0x31a4) = 0;
*(undefined4 *)(this + 0x31a8) = 0;
*(undefined4 *)(this + 0x31ac) = 0;
*(undefined4 *)(this + 0x31b0) = 0;
*(undefined4 *)(this + 0x31b4) = 0;
*(undefined4 *)(this + 0x31b8) = 0;
if (*(int *)(this + 0x3a78) != 0) {
if (this[0x6c] == (CTerrorPlayer)0x0) {
pCVar3 = *(CBaseEdict **)(this + 0x30);
if (pCVar3 != (CBaseEdict *)0x0) {
*(uint *)pCVar3 = *(uint *)pCVar3 | 0x101;
iVar23 = CBaseEdict::GetChangeAccessor(pCVar3);
*(undefined2 *)(iVar23 + 2) = 0;
}
}
else {
this[0x70] = (CTerrorPlayer)((byte)this[0x70] | 1);
}
*(undefined4 *)(this + 0x3a78) = 0;
}
fVar29 = *(float *)(ZombieFrustrationSpawnDelay._28_4_ + 0x2c);
lVar28 = (longdouble)CountdownTimer::Now();
if ((float)lVar28 + fVar29 != *(float *)(this + 0x3a84)) {
(**(code **)(*(int *)(this + 0x3a7c) + 4))(this + 0x3a7c,this + 0x3a84);
*(float *)(this + 0x3a84) = (float)lVar28 + fVar29;
}
if (fVar29 != *(float *)(this + 0x3a80)) {
(**(code **)(*(int *)(this + 0x3a7c) + 4))(this + 0x3a7c,this + 0x3a80);
*(float *)(this + 0x3a80) = fVar29;
}
if (((*(float *)(this + 0x3394) != 0.0) || (*(float *)(this + 0x3398) != 0.0)) ||
(*(float *)(this + 0x339c) != 0.0)) {
if (this[0x6c] == (CTerrorPlayer)0x0) {
pCVar3 = *(CBaseEdict **)(this + 0x30);
if (pCVar3 != (CBaseEdict *)0x0) {
*(uint *)pCVar3 = *(uint *)pCVar3 | 0x101;
/* try { // try from 009d419a to 009d419e has its CatchHandler @ 009d6196 */
iVar23 = CBaseEdict::GetChangeAccessor(pCVar3);
*(undefined2 *)(iVar23 + 2) = 0;
}
}
else {
this[0x70] = (CTerrorPlayer)((byte)this[0x70] | 1);
}
*(undefined4 *)(this + 0x3394) = 0;
*(undefined4 *)(this + 0x3398) = 0;
*(undefined4 *)(this + 0x339c) = 0;
}
if (*(float *)(this + 0x2ea8) != -1.0) {
(**(code **)(*(int *)(this + 0x2ea0) + 4))(this + 0x2ea0,this + 0x2ea8);
*(undefined4 *)(this + 0x2ea8) = 0xbf800000;
}
if (*(float *)(this + 0x3eb4) != -1.0) {
(**(code **)(*(int *)(this + 0x3eb0) + 4))(this + 0x3eb0,this + 0x3eb4);
*(undefined4 *)(this + 0x3eb4) = 0xbf800000;
}
if (*(float *)(this + 0x3e3c) != -1.0) {
(**(code **)(*(int *)(this + 0x3e34) + 4))(this + 0x3e34,this + 0x3e3c);
*(undefined4 *)(this + 0x3e3c) = 0xbf800000;
}
this[0x3e40] = (CTerrorPlayer)0x0;
*(undefined4 *)(this + 0x39e8) = 0;
*(undefined4 *)(this + 0x39ec) = 0;
this[0x39f0] = (CTerrorPlayer)0x0;
if (this[0x39f1] != (CTerrorPlayer)0x0) {
if (this[0x6c] == (CTerrorPlayer)0x0) {
pCVar3 = *(CBaseEdict **)(this + 0x30);
if (pCVar3 != (CBaseEdict *)0x0) {
*(uint *)pCVar3 = *(uint *)pCVar3 | 0x101;
iVar23 = CBaseEdict::GetChangeAccessor(pCVar3);
*(undefined2 *)(iVar23 + 2) = 0;
}
}
else {
this[0x70] = (CTerrorPlayer)((byte)this[0x70] | 1);
}
this[0x39f1] = (CTerrorPlayer)0x0;
}
ResetLightingOrigin(this);
if (this[0x39f2] != (CTerrorPlayer)0x0) {
if (this[0x6c] == (CTerrorPlayer)0x0) {
pCVar3 = *(CBaseEdict **)(this + 0x30);
if (pCVar3 != (CBaseEdict *)0x0) {
*(uint *)pCVar3 = *(uint *)pCVar3 | 0x101;
iVar23 = CBaseEdict::GetChangeAccessor(pCVar3);
*(undefined2 *)(iVar23 + 2) = 0;
}
}
else {
this[0x70] = (CTerrorPlayer)((byte)this[0x70] | 1);
}
this[0x39f2] = (CTerrorPlayer)0x0;
}
if (this[0x33dc] != (CTerrorPlayer)0x0) {
if (this[0x6c] == (CTerrorPlayer)0x0) {
pCVar3 = *(CBaseEdict **)(this + 0x30);
if (pCVar3 != (CBaseEdict *)0x0) {
*(uint *)pCVar3 = *(uint *)pCVar3 | 0x101;
iVar23 = CBaseEdict::GetChangeAccessor(pCVar3);
*(undefined2 *)(iVar23 + 2) = 0;
}
}
else {
this[0x70] = (CTerrorPlayer)((byte)this[0x70] | 1);
}
this[0x33dc] = (CTerrorPlayer)0x0;
}
if (this[0x33dd] == (CTerrorPlayer)0x0) {
CVar10 = this[0x33e4];
}
else {
if (this[0x6c] == (CTerrorPlayer)0x0) {
pCVar3 = *(CBaseEdict **)(this + 0x30);
if (pCVar3 != (CBaseEdict *)0x0) {
*(uint *)pCVar3 = *(uint *)pCVar3 | 0x101;
iVar23 = CBaseEdict::GetChangeAccessor(pCVar3);
*(undefined2 *)(iVar23 + 2) = 0;
}
}
else {
this[0x70] = (CTerrorPlayer)((byte)this[0x70] | 1);
}
CVar10 = this[0x33e4];
this[0x33dd] = (CTerrorPlayer)0x0;
}
if (CVar10 != (CTerrorPlayer)0x0) {
if (this[0x6c] == (CTerrorPlayer)0x0) {
pCVar3 = *(CBaseEdict **)(this + 0x30);
if (pCVar3 != (CBaseEdict *)0x0) {
*(uint *)pCVar3 = *(uint *)pCVar3 | 0x101;
iVar23 = CBaseEdict::GetChangeAccessor(pCVar3);
*(undefined2 *)(iVar23 + 2) = 0;
}
}
else {
this[0x70] = (CTerrorPlayer)((byte)this[0x70] | 1);
}
this[0x33e4] = (CTerrorPlayer)0x0;
}
if (*(float *)(this + 0x39f8) != -1.0) {
(**(code **)(*(int *)(this + 0x39f4) + 4))(this + 0x39f4,this + 0x39f8);
*(undefined4 *)(this + 0x39f8) = 0xbf800000;
}
if (((*(float *)(this + 0x39fc) != 0.0) || (*(float *)(this + 0x3a00) != 0.0)) ||
(*(float *)(this + 0x3a04) != 0.0)) {
if (this[0x6c] == (CTerrorPlayer)0x0) {
pCVar3 = *(CBaseEdict **)(this + 0x30);
if (pCVar3 != (CBaseEdict *)0x0) {
*(uint *)pCVar3 = *(uint *)pCVar3 | 0x101;
iVar23 = CBaseEdict::GetChangeAccessor(pCVar3);
*(undefined2 *)(iVar23 + 2) = 0;
}
}
else {
this[0x70] = (CTerrorPlayer)((byte)this[0x70] | 1);
}
*(undefined4 *)(this + 0x39fc) = 0;
*(undefined4 *)(this + 0x3a00) = 0;
*(undefined4 *)(this + 0x3a04) = 0;
}
if (((*(float *)(this + 0x3a08) != 0.0) || (*(float *)(this + 0x3a0c) != 0.0)) ||
(*(float *)(this + 0x3a10) != 0.0)) {
if (this[0x6c] == (CTerrorPlayer)0x0) {
pCVar3 = *(CBaseEdict **)(this + 0x30);
if (pCVar3 != (CBaseEdict *)0x0) {
*(uint *)pCVar3 = *(uint *)pCVar3 | 0x101;
iVar23 = CBaseEdict::GetChangeAccessor(pCVar3);
*(undefined2 *)(iVar23 + 2) = 0;
}
}
else {
this[0x70] = (CTerrorPlayer)((byte)this[0x70] | 1);
}
*(undefined4 *)(this + 0x3a08) = 0;
*(undefined4 *)(this + 0x3a0c) = 0;
*(undefined4 *)(this + 0x3a10) = 0;
}
*(undefined4 *)(this + 0x3a30) = 0;
*(undefined4 *)(this + 0x3a34) = 0;
*(undefined4 *)(this + 0x3a38) = 0;
if (((*(float *)(this + 0x3a14) == 0.0) && (*(float *)(this + 0x3a18) == 0.0)) &&
(*(float *)(this + 0x3a1c) == 0.0)) {
fVar29 = *(float *)(this + 0x3a20);
}
else {
if (this[0x6c] == (CTerrorPlayer)0x0) {
pCVar3 = *(CBaseEdict **)(this + 0x30);
if (pCVar3 != (CBaseEdict *)0x0) {
*(uint *)pCVar3 = *(uint *)pCVar3 | 0x101;
iVar23 = CBaseEdict::GetChangeAccessor(pCVar3);
*(undefined2 *)(iVar23 + 2) = 0;
}
}
else {
this[0x70] = (CTerrorPlayer)((byte)this[0x70] | 1);
}
*(undefined4 *)(this + 0x3a14) = 0;
fVar29 = *(float *)(this + 0x3a20);
*(undefined4 *)(this + 0x3a18) = 0;
*(undefined4 *)(this + 0x3a1c) = 0;
}
if (((fVar29 != 0.0) || (*(float *)(this + 0x3a24) != 0.0)) || (*(float *)(this + 0x3a28) != 0.0))
{
if (this[0x6c] == (CTerrorPlayer)0x0) {
pCVar3 = *(CBaseEdict **)(this + 0x30);
if (pCVar3 != (CBaseEdict *)0x0) {
*(uint *)pCVar3 = *(uint *)pCVar3 | 0x101;
iVar23 = CBaseEdict::GetChangeAccessor(pCVar3);
*(undefined2 *)(iVar23 + 2) = 0;
}
}
else {
this[0x70] = (CTerrorPlayer)((byte)this[0x70] | 1);
}
*(undefined4 *)(this + 0x3a20) = 0;
*(undefined4 *)(this + 0x3a24) = 0;
*(undefined4 *)(this + 0x3a28) = 0;
}
this[0x3a2c] = (CTerrorPlayer)0x0;
*(undefined4 *)(this + 0x3a64) = 0;
this[0x3f04] = (CTerrorPlayer)0x0;
if (this[0x3f14] != (CTerrorPlayer)0x0) {
if (this[0x6c] == (CTerrorPlayer)0x0) {
pCVar3 = *(CBaseEdict **)(this + 0x30);
if (pCVar3 != (CBaseEdict *)0x0) {
*(uint *)pCVar3 = *(uint *)pCVar3 | 0x101;
iVar23 = CBaseEdict::GetChangeAccessor(pCVar3);
*(undefined2 *)(iVar23 + 2) = 0;
}
}
else {
this[0x70] = (CTerrorPlayer)((byte)this[0x70] | 1);
}
this[0x3f14] = (CTerrorPlayer)0x0;
}
*(undefined4 *)(this + 0x2a50) = 0;
if (this[0x3fe0] != (CTerrorPlayer)0x1) {
if (this[0x6c] == (CTerrorPlayer)0x0) {
pCVar3 = *(CBaseEdict **)(this + 0x30);
if (pCVar3 != (CBaseEdict *)0x0) {
*(uint *)pCVar3 = *(uint *)pCVar3 | 0x101;
iVar23 = CBaseEdict::GetChangeAccessor(pCVar3);
*(undefined2 *)(iVar23 + 2) = 0;
}
}
else {
this[0x70] = (CTerrorPlayer)((byte)this[0x70] | 1);
}
this[0x3fe0] = (CTerrorPlayer)0x1;
}
*(undefined4 *)(this + 0x3ee4) = 0xffffffff;
this[0x2f5c] = (CTerrorPlayer)0x0;
this[0x2f5d] = (CTerrorPlayer)0x0;
this[0x2f5e] = (CTerrorPlayer)0x0;
this[0x2f5f] = (CTerrorPlayer)0x0;
CCSPlayer::Spawn((CCSPlayer *)this);
(**(code **)(*(int *)this + 0x8bc))(this);
cVar9 = CTerrorGameRules::IsSurvivalMode();
if ((cVar9 != '\0') ||
(((cVar9 = IsTransitioned(this), cVar9 == '\0' &&
(cVar9 = CDirector::IsTransitionScenarioRestart(), cVar9 == '\0')) &&
(*(int *)(survivor_respawn_with_guns._28_4_ + 0x30) != 0)))) {
(**(code **)(*(int *)this + 0x8e8))(this);
}
iVar23 = CBaseEntity::GetTeamNumber((CBaseEntity *)this);
this[iVar23 % 2 + 0x30d4] = (CTerrorPlayer)0x1;
CVar10 = (CTerrorPlayer)CDirector::IsMissionStartMap(TheDirector);
if (CVar10 != this[0x2ce0]) {
if (this[0x6c] == (CTerrorPlayer)0x0) {
pCVar3 = *(CBaseEdict **)(this + 0x30);
if (pCVar3 != (CBaseEdict *)0x0) {
*(uint *)pCVar3 = *(uint *)pCVar3 | 0x101;
iVar23 = CBaseEdict::GetChangeAccessor(pCVar3);
*(undefined2 *)(iVar23 + 2) = 0;
}
}
else {
this[0x70] = (CTerrorPlayer)((byte)this[0x70] | 1);
}
this[0x2ce0] = CVar10;
}
if (((CVar10 != (CTerrorPlayer)0x0) &&
(iVar23 = (**(code **)(*(int *)this + 0x52c))(this), iVar23 != 0)) &&
(((*(byte *)(iVar23 + 0x12d) & 8) == 0 && (this[0x2ce0] != (CTerrorPlayer)0x0)))) {
if (this[0x6c] == (CTerrorPlayer)0x0) {
pCVar3 = *(CBaseEdict **)(this + 0x30);
if (pCVar3 != (CBaseEdict *)0x0) {
*(uint *)pCVar3 = *(uint *)pCVar3 | 0x101;
iVar23 = CBaseEdict::GetChangeAccessor(pCVar3);
*(undefined2 *)(iVar23 + 2) = 0;
}
}
else {
this[0x70] = (CTerrorPlayer)((byte)this[0x70] | 1);
}
this[0x2ce0] = (CTerrorPlayer)0x0;
}
if (*(float *)(this + 0x2ecc) != -1.0) {
(**(code **)(*(int *)(this + 0x2ec8) + 4))(this + 0x2ec8,this + 0x2ecc);
*(undefined4 *)(this + 0x2ecc) = 0xbf800000;
}
if (*(float *)(this + 0x2ed8) != -1.0) {
(**(code **)(*(int *)(this + 0x2ed0) + 4))(this + 0x2ed0,this + 0x2ed8);
*(undefined4 *)(this + 0x2ed8) = 0xbf800000;
}
this[0x2edc] = (CTerrorPlayer)0x0;
Intensity::Reset((Intensity *)(this + 12000));
this[0x2f68] = (CTerrorPlayer)0x0;
if (*(float *)(this + 0x3118) != -1.0) {
/* try { // try from 009d4e06 to 009d50e6 has its CatchHandler @ 009d6196 */
(**(code **)(*(int *)(this + 0x3114) + 4))(this + 0x3114,this + 0x3118);
*(undefined4 *)(this + 0x3118) = 0xbf800000;
}
if (*(float *)(this + 0x3120) != -1.0) {
(**(code **)(*(int *)(this + 0x311c) + 4))(this + 0x311c,this + 0x3120);
*(undefined4 *)(this + 0x3120) = 0xbf800000;
}
if (*(float *)(this + 0x31dc) != -1.0) {
(**(code **)(*(int *)(this + 0x31d4) + 4))(this + 0x31d4,this + 0x31dc);
*(undefined4 *)(this + 0x31dc) = 0xbf800000;
}
if (*(float *)(this + 0x31ec) != -1.0) {
(**(code **)(*(int *)(this + 0x31e4) + 4))(this + 0x31e4,this + 0x31ec);
*(undefined4 *)(this + 0x31ec) = 0xbf800000;
}
if (*(float *)(this + 0x324c) != -1.0) {
(**(code **)(*(int *)(this + 0x3244) + 4))(this + 0x3244,this + 0x324c);
*(undefined4 *)(this + 0x324c) = 0xbf800000;
}
if (*(float *)(this + 0x3284) != -1.0) {
(**(code **)(*(int *)(this + 0x327c) + 4))(this + 0x327c,this + 0x3284);
*(undefined4 *)(this + 0x3284) = 0xbf800000;
}
if (*(float *)(this + 0x3294) != -1.0) {
/* try { // try from 009d516e to 009d56c5 has its CatchHandler @ 009d6196 */
(**(code **)(*(int *)(this + 0x328c) + 4))(this + 0x328c,this + 0x3294);
*(undefined4 *)(this + 0x3294) = 0xbf800000;
}
if (*(float *)(this + 0x32a4) != -1.0) {
(**(code **)(*(int *)(this + 0x329c) + 4))(this + 0x329c,this + 0x32a4);
*(undefined4 *)(this + 0x32a4) = 0xbf800000;
}
lVar28 = (longdouble)CountdownTimer::Now();
if ((float)lVar28 + 0.25 != *(float *)(this + 0x2e94)) {
(**(code **)(*(int *)(this + 0x2e8c) + 4))(this + 0x2e8c,this + 0x2e94);
*(float *)(this + 0x2e94) = (float)lVar28 + 0.25;
}
if (*(float *)(this + 0x2e90) != 0.25) {
(**(code **)(*(int *)(this + 0x2e8c) + 4))(this + 0x2e8c,this + 0x2e90);
*(undefined4 *)(this + 0x2e90) = 0x3e800000;
}
CBasePlayer::DeactivateMovementConstraint((CBasePlayer *)this);
*(undefined4 *)(this + 0x32ac) = 0xffffffff;
*(undefined4 *)(this + 0x32b0) = 0xffffffff;
if (*(float *)(this + 0x3a94) != -1.0) {
(**(code **)(*(int *)(this + 0x3a90) + 4))(this + 0x3a90,this + 0x3a94);
*(undefined4 *)(this + 0x3a94) = 0xbf800000;
}
*(undefined4 *)(this + 0x3178) = 0xbf800000;
*(undefined4 *)(this + 0x3154) = 0xbf800000;
if (*(float *)(this + 0x316c) != -1.0) {
(**(code **)(*(int *)(this + 0x3168) + 4))(this + 0x3168,this + 0x316c);
*(undefined4 *)(this + 0x316c) = 0xbf800000;
}
if (*(float *)(this + 0x3174) != -1.0) {
(**(code **)(*(int *)(this + 0x3170) + 4))(this + 0x3170,this + 0x3174);
*(undefined4 *)(this + 0x3174) = 0xbf800000;
}
if (*(float *)(this + 0x3180) != -1.0) {
(**(code **)(*(int *)(this + 0x317c) + 4))(this + 0x317c,this + 0x3180);
*(undefined4 *)(this + 0x3180) = 0xbf800000;
}
if (*(float *)(this + 0x39e0) != -1.0) {
if (this[0x6c] == (CTerrorPlayer)0x0) {
pCVar3 = *(CBaseEdict **)(this + 0x30);
if (pCVar3 != (CBaseEdict *)0x0) {
*(uint *)pCVar3 = *(uint *)pCVar3 | 0x101;
iVar23 = CBaseEdict::GetChangeAccessor(pCVar3);
*(undefined2 *)(iVar23 + 2) = 0;
}
}
else {
this[0x70] = (CTerrorPlayer)((byte)this[0x70] | 1);
}
*(undefined4 *)(this + 0x39e0) = 0xbf800000;
}
CCollisionProperty::SetSolid((CCollisionProperty *)(this + 0x194),2);
CBaseEntity::RemoveFlag((CBaseEntity *)this,0x20);
CBasePlayer::ClearZoomOwner((CBasePlayer *)this);
CBasePlayer::SetFOV((CBasePlayer *)this,(CBaseEntity *)this,0,0.0,0);
if (((vec3_angle != *(float *)(this + 0x1ab0)) || (DAT_01053d40 != *(float *)(this + 0x1ab4))) ||
(fVar29 = DAT_01053d40, fVar26 = DAT_01053d44, DAT_01053d44 != *(float *)(this + 0x1ab8))) {
(**(code **)(*(int *)(this + 0x1a40) + 4))(this + 0x1a40,this + 0x1ab0);
fVar26 = DAT_01053d44;
fVar29 = DAT_01053d40;
fVar5 = vec3_angle;
*(float *)(this + 0x1ab4) = DAT_01053d40;
*(float *)(this + 0x1ab0) = fVar5;
*(float *)(this + 0x1ab8) = fVar26;
}
if (((vec3_angle != *(float *)(this + 0x1abc)) || (fVar29 != *(float *)(this + 0x1ac0))) ||
(fVar26 != *(float *)(this + 0x1ac4))) {
(**(code **)(*(int *)(this + 0x1a40) + 4))(this + 0x1a40,this + 0x1abc);
fVar5 = vec3_angle;
*(float *)(this + 0x1ac0) = fVar29;
*(float *)(this + 0x1ac4) = fVar26;
*(float *)(this + 0x1abc) = fVar5;
}
*(undefined4 *)(this + 0x3334) = 0;
if (*(float *)(this + 0x3340) != -1.0) {
(**(code **)(*(int *)(this + 0x3338) + 4))(this + 0x3338,this + 0x3340);
*(undefined4 *)(this + 0x3340) = 0xbf800000;
}
if (*(float *)(this + 0x334c) != -1.0) {
(**(code **)(*(int *)(this + 0x3344) + 4))(this + 0x3344,this + 0x334c);
*(undefined4 *)(this + 0x334c) = 0xbf800000;
}
this[0x3354] = (CTerrorPlayer)0x0;
*(undefined4 *)(this + 0x3350) = 0;
if (*(float *)(this + 0x31f8) != -1.0) {
(**(code **)(*(int *)(this + 0x31f0) + 4))(this + 0x31f0,this + 0x31f8);
*(undefined4 *)(this + 0x31f8) = 0xbf800000;
}
if (((*(float *)(this + 0x31fc) == 0.0) && (*(float *)(this + 0x3200) == 0.0)) &&
(*(float *)(this + 0x3204) == 0.0)) {
fVar29 = *(float *)(this + 0x3208);
}
else {
if (this[0x6c] == (CTerrorPlayer)0x0) {
pCVar3 = *(CBaseEdict **)(this + 0x30);
if (pCVar3 != (CBaseEdict *)0x0) {
*(uint *)pCVar3 = *(uint *)pCVar3 | 0x101;
iVar23 = CBaseEdict::GetChangeAccessor(pCVar3);
*(undefined2 *)(iVar23 + 2) = 0;
}
}
else {
this[0x70] = (CTerrorPlayer)((byte)this[0x70] | 1);
}
*(undefined4 *)(this + 0x31fc) = 0;
fVar29 = *(float *)(this + 0x3208);
*(undefined4 *)(this + 0x3200) = 0;
*(undefined4 *)(this + 0x3204) = 0;
}
if (((fVar29 == 0.0) && (*(float *)(this + 0x320c) == 0.0)) && (*(float *)(this + 0x3210) == 0.0))
{
fVar29 = *(float *)(this + 0x3214);
}
else {
if (this[0x6c] == (CTerrorPlayer)0x0) {
pCVar3 = *(CBaseEdict **)(this + 0x30);
if (pCVar3 != (CBaseEdict *)0x0) {
*(uint *)pCVar3 = *(uint *)pCVar3 | 0x101;
iVar23 = CBaseEdict::GetChangeAccessor(pCVar3);
*(undefined2 *)(iVar23 + 2) = 0;
}
}
else {
this[0x70] = (CTerrorPlayer)((byte)this[0x70] | 1);
}
*(undefined4 *)(this + 0x3208) = 0;
fVar29 = *(float *)(this + 0x3214);
*(undefined4 *)(this + 0x320c) = 0;
*(undefined4 *)(this + 0x3210) = 0;
}
if (fVar29 != 0.0) {
if (this[0x6c] == (CTerrorPlayer)0x0) {
pCVar3 = *(CBaseEdict **)(this + 0x30);
if (pCVar3 != (CBaseEdict *)0x0) {
*(uint *)pCVar3 = *(uint *)pCVar3 | 0x101;
iVar23 = CBaseEdict::GetChangeAccessor(pCVar3);
*(undefined2 *)(iVar23 + 2) = 0;
}
}
else {
this[0x70] = (CTerrorPlayer)((byte)this[0x70] | 1);
}
*(undefined4 *)(this + 0x3214) = 0;
}
*(undefined4 *)(this + 0x3218) = 0xffffffff;
if (*(float *)(this + 0x3224) != -1.0) {
(**(code **)(*(int *)(this + 0x321c) + 4))(this + 0x321c,this + 0x3224);
*(undefined4 *)(this + 0x3224) = 0xbf800000;
}
if (((*(float *)(this + 0x3228) == 0.0) && (*(float *)(this + 0x322c) == 0.0)) &&
(*(float *)(this + 0x3230) == 0.0)) {
fVar29 = *(float *)(this + 0x3234);
}
else {
if (this[0x6c] == (CTerrorPlayer)0x0) {
pCVar3 = *(CBaseEdict **)(this + 0x30);
if (pCVar3 != (CBaseEdict *)0x0) {
*(uint *)pCVar3 = *(uint *)pCVar3 | 0x101;
/* try { // try from 009d46fa to 009d4b10 has its CatchHandler @ 009d6196 */
iVar23 = CBaseEdict::GetChangeAccessor(pCVar3);
*(undefined2 *)(iVar23 + 2) = 0;
}
}
else {
this[0x70] = (CTerrorPlayer)((byte)this[0x70] | 1);
}
*(undefined4 *)(this + 0x3228) = 0;
fVar29 = *(float *)(this + 0x3234);
*(undefined4 *)(this + 0x322c) = 0;
*(undefined4 *)(this + 0x3230) = 0;
}
if (((fVar29 != 0.0) || (*(float *)(this + 0x3238) != 0.0)) || (*(float *)(this + 0x323c) != 0.0))
{
if (this[0x6c] == (CTerrorPlayer)0x0) {
pCVar3 = *(CBaseEdict **)(this + 0x30);
if (pCVar3 != (CBaseEdict *)0x0) {
*(uint *)pCVar3 = *(uint *)pCVar3 | 0x101;
iVar23 = CBaseEdict::GetChangeAccessor(pCVar3);
*(undefined2 *)(iVar23 + 2) = 0;
}
}
else {
this[0x70] = (CTerrorPlayer)((byte)this[0x70] | 1);
}
*(undefined4 *)(this + 0x3234) = 0;
*(undefined4 *)(this + 0x3238) = 0;
*(undefined4 *)(this + 0x323c) = 0;
}
if (*(float *)(this + 0x3240) != 0.0) {
if (this[0x6c] == (CTerrorPlayer)0x0) {
pCVar3 = *(CBaseEdict **)(this + 0x30);
if (pCVar3 != (CBaseEdict *)0x0) {
*(uint *)pCVar3 = *(uint *)pCVar3 | 0x101;
iVar23 = CBaseEdict::GetChangeAccessor(pCVar3);
*(undefined2 *)(iVar23 + 2) = 0;
}
}
else {
this[0x70] = (CTerrorPlayer)((byte)this[0x70] | 1);
}
*(undefined4 *)(this + 0x3240) = 0;
}
this[0x3fc0] = (CTerrorPlayer)0x0;
*(undefined4 *)(this + 0x3fc4) = 0;
iVar23 = CBaseEntity::GetTeamNumber((CBaseEntity *)this);
if (iVar23 == 3) {
if (this[0x2429] != (CTerrorPlayer)0x1) {
if (this[0x6c] == (CTerrorPlayer)0x0) {
pCVar3 = *(CBaseEdict **)(this + 0x30);
if (pCVar3 != (CBaseEdict *)0x0) {
*(uint *)pCVar3 = *(uint *)pCVar3 | 0x101;
iVar23 = CBaseEdict::GetChangeAccessor(pCVar3);
*(undefined2 *)(iVar23 + 2) = 0;
}
}
else {
this[0x70] = (CTerrorPlayer)((byte)this[0x70] | 1);
}
this[0x2429] = (CTerrorPlayer)0x1;
}
if (this[0x242a] != (CTerrorPlayer)0x0) {
if (this[0x6c] == (CTerrorPlayer)0x0) {
pCVar3 = *(CBaseEdict **)(this + 0x30);
if (pCVar3 != (CBaseEdict *)0x0) {
*(uint *)pCVar3 = *(uint *)pCVar3 | 0x101;
iVar23 = CBaseEdict::GetChangeAccessor(pCVar3);
*(undefined2 *)(iVar23 + 2) = 0;
}
}
else {
this[0x70] = (CTerrorPlayer)((byte)this[0x70] | 1);
}
this[0x242a] = (CTerrorPlayer)0x0;
}
}
else {
if (this[0x2429] != (CTerrorPlayer)0x0) {
if (this[0x6c] == (CTerrorPlayer)0x0) {
pCVar3 = *(CBaseEdict **)(this + 0x30);
if (pCVar3 != (CBaseEdict *)0x0) {
*(uint *)pCVar3 = *(uint *)pCVar3 | 0x101;
/* try { // try from 009d578f to 009d5793 has its CatchHandler @ 009d6196 */
iVar23 = CBaseEdict::GetChangeAccessor(pCVar3);
*(undefined2 *)(iVar23 + 2) = 0;
}
}
else {
this[0x70] = (CTerrorPlayer)((byte)this[0x70] | 1);
}
this[0x2429] = (CTerrorPlayer)0x0;
}
if (this[0x242a] != (CTerrorPlayer)0x0) {
if (this[0x6c] == (CTerrorPlayer)0x0) {
pCVar3 = *(CBaseEdict **)(this + 0x30);
if (pCVar3 != (CBaseEdict *)0x0) {
*(uint *)pCVar3 = *(uint *)pCVar3 | 0x101;
iVar23 = CBaseEdict::GetChangeAccessor(pCVar3);
*(undefined2 *)(iVar23 + 2) = 0;
}
}
else {
this[0x70] = (CTerrorPlayer)((byte)this[0x70] | 1);
}
this[0x242a] = (CTerrorPlayer)0x0;
}
CDirector::OnSurvivorAdded((CTerrorPlayer *)TheDirector);
*(undefined4 *)(this + 0x2400) = *(undefined4 *)(gpGlobals + 0xc);
}
this[0x3fcd] = (CTerrorPlayer)0x0;
lVar28 = (longdouble)IntervalTimer::Now();
if ((float)lVar28 != *(float *)(this + 0x30c8)) {
(**(code **)(*(int *)(this + 0x30c4) + 4))(this + 0x30c4,this + 0x30c8);
*(float *)(this + 0x30c8) = (float)lVar28;
}
CRecipientFilter::CRecipientFilter(local_3c);
/* try { // try from 009d3bb7 to 009d3e70 has its CatchHandler @ 009d618e */
CRecipientFilter::MakeReliable(local_3c);
CRecipientFilter::AddRecipient(local_3c,(CBasePlayer *)this);
UserMessageBegin((IRecipientFilter *)local_3c,"Spawn");
iVar23 = CBaseEntity::GetTeamNumber((CBaseEntity *)this);
MessageWriteByte(iVar23);
MessageEnd();
if (0 < *(int *)(gpGlobals + 0x14)) {
iVar23 = 1;
do {
while (((pCVar15 = (CBasePlayer *)UTIL_PlayerByIndex(iVar23), pCVar15 != (CBasePlayer *)0x0 &&
(this != (CTerrorPlayer *)pCVar15)) &&
((cVar9 = (**(code **)(*(int *)pCVar15 + 0x778))(pCVar15), cVar9 == '\0' &&
((iVar13 = (**(code **)(*(int *)pCVar15 + 0x648))(pCVar15), iVar13 == 4 &&
(pCVar16 = (CTerrorPlayer *)(**(code **)(*(int *)pCVar15 + 0x654))(pCVar15),
this == pCVar16))))))) {
CRecipientFilter::AddRecipient(local_3c,pCVar15);
iVar23 = iVar23 + 1;
if (*(int *)(gpGlobals + 0x14) < iVar23) goto LAB_009d3c80;
}
iVar23 = iVar23 + 1;
} while (iVar23 <= *(int *)(gpGlobals + 0x14));
}
LAB_009d3c80:
UserMessageBegin((IRecipientFilter *)local_3c,"SplatterClear");
MessageEnd();
if (this[0x32c4] != (CTerrorPlayer)0x0) {
if (this[0x6c] == (CTerrorPlayer)0x0) {
pCVar3 = *(CBaseEdict **)(this + 0x30);
if (pCVar3 != (CBaseEdict *)0x0) {
*(uint *)pCVar3 = *(uint *)pCVar3 | 0x101;
iVar23 = CBaseEdict::GetChangeAccessor(pCVar3);
*(undefined2 *)(iVar23 + 2) = 0;
}
}
else {
this[0x70] = (CTerrorPlayer)((byte)this[0x70] | 1);
}
this[0x32c4] = (CTerrorPlayer)0x0;
}
if (*(float *)(this + 0x32dc) != -1.0) {
/* try { // try from 009d5112 to 009d5142 has its CatchHandler @ 009d618e */
(**(code **)(*(int *)(this + 0x32d4) + 4))(this + 0x32d4,this + 0x32dc);
*(undefined4 *)(this + 0x32dc) = 0xbf800000;
}
if (this[0x33a0] != (CTerrorPlayer)0x0) {
if (this[0x6c] == (CTerrorPlayer)0x0) {
pCVar3 = *(CBaseEdict **)(this + 0x30);
if (pCVar3 != (CBaseEdict *)0x0) {
*(uint *)pCVar3 = *(uint *)pCVar3 | 0x101;
iVar23 = CBaseEdict::GetChangeAccessor(pCVar3);
*(undefined2 *)(iVar23 + 2) = 0;
}
}
else {
this[0x70] = (CTerrorPlayer)((byte)this[0x70] | 1);
}
this[0x33a0] = (CTerrorPlayer)0x0;
}
uVar11 = *(undefined4 *)(this + 0x2cd4);
*(undefined4 *)(this + 0x2cd4) = 0;
*(undefined4 *)(this + 0x2cd0) = uVar11;
if (*(float *)(this + 0x2c1c) != 0.0) {
if (this[0x6c] == (CTerrorPlayer)0x0) {
pCVar3 = *(CBaseEdict **)(this + 0x30);
if (pCVar3 != (CBaseEdict *)0x0) {
*(uint *)pCVar3 = *(uint *)pCVar3 | 0x101;
iVar23 = CBaseEdict::GetChangeAccessor(pCVar3);
*(undefined2 *)(iVar23 + 2) = 0;
}
}
else {
this[0x70] = (CTerrorPlayer)((byte)this[0x70] | 1);
}
*(undefined4 *)(this + 0x2c1c) = 0;
}
SetHealthBuffer(this,0.0);
if (this[0x32fc] != (CTerrorPlayer)0x0) {
if (this[0x6c] == (CTerrorPlayer)0x0) {
pCVar3 = *(CBaseEdict **)(this + 0x30);
if (pCVar3 != (CBaseEdict *)0x0) {
*(uint *)pCVar3 = *(uint *)pCVar3 | 0x101;
iVar23 = CBaseEdict::GetChangeAccessor(pCVar3);
*(undefined2 *)(iVar23 + 2) = 0;
}
}
else {
this[0x70] = (CTerrorPlayer)((byte)this[0x70] | 1);
}
this[0x32fc] = (CTerrorPlayer)0x0;
}
ApplyHealthModifications(this);
if (*(float *)(this + 0x3304) != 0.0) {
if (this[0x6c] == (CTerrorPlayer)0x0) {
pCVar3 = *(CBaseEdict **)(this + 0x30);
if (pCVar3 != (CBaseEdict *)0x0) {
*(uint *)pCVar3 = *(uint *)pCVar3 | 0x101;
iVar23 = CBaseEdict::GetChangeAccessor(pCVar3);
*(undefined2 *)(iVar23 + 2) = 0;
}
}
else {
this[0x70] = (CTerrorPlayer)((byte)this[0x70] | 1);
}
*(undefined4 *)(this + 0x3304) = 0;
}
*(undefined4 *)(this + 0x3310) = *(undefined4 *)(gpGlobals + 0xc);
if (*(int *)(this + 0x3308) != 0) {
if (this[0x6c] == (CTerrorPlayer)0x0) {
pCVar3 = *(CBaseEdict **)(this + 0x30);
if (pCVar3 != (CBaseEdict *)0x0) {
*(uint *)pCVar3 = *(uint *)pCVar3 | 0x101;
/* try { // try from 009d4b3a to 009d4ba6 has its CatchHandler @ 009d618e */
iVar23 = CBaseEdict::GetChangeAccessor(pCVar3);
*(undefined2 *)(iVar23 + 2) = 0;
}
}
else {
this[0x70] = (CTerrorPlayer)((byte)this[0x70] | 1);
}
*(undefined4 *)(this + 0x3308) = 0;
}
this[0x3330] = (CTerrorPlayer)0x0;
*(undefined4 *)(this + 0x3320) = 0;
if (*(float *)(this + 0x331c) != -1.0) {
(**(code **)(*(int *)(this + 0x3314) + 4))(this + 0x3314,this + 0x331c);
*(undefined4 *)(this + 0x331c) = 0xbf800000;
}
(**(code **)(*enginesound + 0x2c))(enginesound,local_3c,0,0);
puVar17 = (undefined4 *)(**(code **)(*(int *)this + 0x288))(this);
*(undefined4 *)(this + 0x30dc) = *puVar17;
*(undefined4 *)(this + 0x30e0) = puVar17[1];
*(undefined4 *)(this + 0x30e4) = puVar17[2];
uVar11 = CNavMesh::GetNavArea(TheNavMesh,(Vector *)(this + 0x30dc),120.0);
*(undefined4 *)(this + 0x30d8) = uVar11;
this[0x3376] = (CTerrorPlayer)0x0;
this[0x3375] = (CTerrorPlayer)0x0;
iVar23 = CBaseEntity::GetTeamNumber((CBaseEntity *)this);
if (iVar23 == 3) {
if (*(float *)(this + 0x2d48) <= 0.0) {
local_7c = 0.0;
}
else {
*(int *)(this + 0x2d58) = *(int *)(this + 0x2d58) + 1;
local_7c = *(float *)(gpGlobals + 0xc) - *(float *)(this + 0x2d48);
if (local_7c < *(float *)(this + 0x2d4c)) {
*(float *)(this + 0x2d4c) = local_7c;
}
if (*(float *)(this + 0x2d50) <= local_7c && local_7c != *(float *)(this + 0x2d50)) {
if (this[0x6c] == (CTerrorPlayer)0x0) {
pCVar3 = *(CBaseEdict **)(this + 0x30);
if (pCVar3 != (CBaseEdict *)0x0) {
*(uint *)pCVar3 = *(uint *)pCVar3 | 0x101;
iVar23 = CBaseEdict::GetChangeAccessor(pCVar3);
*(undefined2 *)(iVar23 + 2) = 0;
}
}
else {
this[0x70] = (CTerrorPlayer)((byte)this[0x70] | 1);
}
*(float *)(this + 0x2d50) = local_7c;
}
fVar29 = local_7c + *(float *)(this + 0x2d54);
if (*(float *)(this + 0x2d54) != fVar29) {
if (this[0x6c] == (CTerrorPlayer)0x0) {
pCVar3 = *(CBaseEdict **)(this + 0x30);
if (pCVar3 != (CBaseEdict *)0x0) {
*(uint *)pCVar3 = *(uint *)pCVar3 | 0x101;
/* try { // try from 009d5cad to 009d5cb1 has its CatchHandler @ 009d6161 */
iVar23 = CBaseEdict::GetChangeAccessor(pCVar3);
*(undefined2 *)(iVar23 + 2) = 0;
}
}
else {
this[0x70] = (CTerrorPlayer)((byte)this[0x70] | 1);
}
*(float *)(this + 0x2d54) = fVar29;
}
*(undefined4 *)(this + 0x2d48) = 0;
}
/* try { // try from 009d3ef4 to 009d40df has its CatchHandler @ 009d6161 */
cVar9 = CTerrorGameRules::HasPlayerControlledZombies();
iVar23 = g_ZombieClass;
/* try { // try from 009d5b55 to 009d5c4e has its CatchHandler @ 009d6161 */
if ((((cVar9 != '\0') &&
(cVar9 = (**(code **)(*(int *)this + 0x778))(this), iVar23 = g_ZombieClass, cVar9 == '\0'))
&& (this[0x3fe1] == (CTerrorPlayer)0x0)) && (iVar23 = 8, g_ZombieClass != 8)) {
if (*(int *)(this + 0x2ba4) != 0) {
if (this[0x6c] == (CTerrorPlayer)0x0) {
pCVar3 = *(CBaseEdict **)(this + 0x30);
if (pCVar3 != (CBaseEdict *)0x0) {
*(uint *)pCVar3 = *(uint *)pCVar3 | 0x101;
iVar23 = CBaseEdict::GetChangeAccessor(pCVar3);
*(undefined2 *)(iVar23 + 2) = 0;
}
}
else {
this[0x70] = (CTerrorPlayer)((byte)this[0x70] | 1);
}
*(undefined4 *)(this + 0x2ba4) = 0;
}
local_6c = 3;
local_64 = 99999;
iVar13 = *(int *)(TheDirector + 0x4f8);
iVar23 = iVar13 + -1;
do {
iVar24 = iVar23 % 6 + 1;
iVar21 = *(int *)(this + iVar24 * 4 + 0x2d14);
iVar7 = local_6c;
iVar8 = local_64;
if ((iVar21 < local_64) &&
(cVar9 = IsClassOverLimit(this,iVar24), iVar7 = iVar24, iVar8 = iVar21, cVar9 != '\0')) {
iVar7 = local_6c;
iVar8 = local_64;
}
local_64 = iVar8;
local_6c = iVar7;
iVar23 = iVar23 + 1;
} while (iVar23 != iVar13 + 5);
g_ZombieClass = local_6c;
g_ZombieClass =
CDirectorChallengeMode::ConvertZombieClass
(*(CDirectorChallengeMode **)(TheDirector + 0x648),local_6c);
iVar23 = g_ZombieClass;
}
(**(code **)(*(int *)this + 0x91c))(this,iVar23);
iVar13 = g_ZombieClass * 4;
iVar23 = *(int *)(this + iVar13 + 0x2d14);
local_58 = iVar23 + 1;
iVar21 = memcmp(this + iVar13 + 0x2d14,(PZSpawnMusic *)&local_58,4);
if (iVar21 != 0) {
if (this[0x6c] == (CTerrorPlayer)0x0) {
pCVar3 = *(CBaseEdict **)(this + 0x30);
if (pCVar3 != (CBaseEdict *)0x0) {
*(uint *)pCVar3 = *(uint *)pCVar3 | 0x101;
/* try { // try from 009d5ad2 to 009d5ad6 has its CatchHandler @ 009d6161 */
iVar21 = CBaseEdict::GetChangeAccessor(pCVar3);
*(undefined2 *)(iVar21 + 2) = 0;
}
}
else {
this[0x70] = (CTerrorPlayer)((byte)this[0x70] | 1);
}
*(int *)(this + iVar13 + 0x2d14) = iVar23 + 1;
}
cVar9 = (**(code **)(*(int *)this + 0x778))(this);
if ((cVar9 == '\0') && (*(int *)(ZombiePlayerZombieDebug._28_4_ + 0x30) != 0)) {
/* try { // try from 009d57fd to 009d582d has its CatchHandler @ 009d6161 */
uVar11 = GetClassString(this);
uVar20 = (**(code **)(*(int *)this + 0xb8))(this);
DevMsg("Player %s spawned as %s after waiting %3.2f seconds\n",uVar20,uVar11,(double)local_7c)
;
}
cVar9 = (**(code **)(*(int *)this + 0x558))(this);
if (cVar9 != '\0') {
CCSPlayer::EmitPrivateSound((CCSPlayer *)this,"PlayerZombie.BecomeGhost");
}
iVar23 = CBaseEntity::GetTeamNumber((CBaseEntity *)this);
/* try { // try from 009d5d0f to 009d5e44 has its CatchHandler @ 009d6161 */
if ((iVar23 == 3) && (iVar23 = (**(code **)(*(int *)this + 0x544))(this), iVar23 == 2)) {
iVar23 = RandomInt(1,100);
if ((iVar23 < *(int *)(BoomerLeakerChance._28_4_ + 0x30)) && (*(int *)(this + 0x4018) != 1)) {
if (this[0x6c] == (CTerrorPlayer)0x0) {
pCVar3 = *(CBaseEdict **)(this + 0x30);
if (pCVar3 != (CBaseEdict *)0x0) {
*(uint *)pCVar3 = *(uint *)pCVar3 | 0x101;
iVar23 = CBaseEdict::GetChangeAccessor(pCVar3);
*(undefined2 *)(iVar23 + 2) = 0;
}
}
else {
this[0x70] = (CTerrorPlayer)((byte)this[0x70] | 1);
}
*(undefined4 *)(this + 0x4018) = 1;
}
cVar9 = (**(code **)(*(int *)this + 0x558))(this);
if (cVar9 == '\0') {
EmitTrackedSound(this,"BoomerZombie.Gurgle",0.0);
local_58 = 2;
ForEachSurvivor<PZSpawnMusic>((PZSpawnMusic *)&local_58);
Vocalize(this,"BoomerZombie.Alert",0.0,0.0);
if (*(int *)(this + 0x4018) == 1) {
/* try { // try from 009d6052 to 009d6056 has its CatchHandler @ 009d6161 */
ClientPrint((CBasePlayer *)this,4,"YOU ARE A LEAKER!",(char *)0x0,(char *)0x0,(char *)0x0,
(char *)0x0);
}
VisibilityMonitor_AddEntity
((CBaseEntity *)this,*(float *)(BoomerNearDist._28_4_ + 0x2c),
BoomerVisibilityMonitorCallback,(_func_bool_CBaseEntity_ptr_CBasePlayer_ptr *)0x0
);
}
}
else {
iVar23 = CBaseEntity::GetTeamNumber((CBaseEntity *)this);
/* try { // try from 009d5eb8 to 009d5fd0 has its CatchHandler @ 009d6161 */
if ((iVar23 == 3) && (iVar23 = (**(code **)(*(int *)this + 0x544))(this), iVar23 == 1)) {
cVar9 = (**(code **)(*(int *)this + 0x558))(this);
if (cVar9 == '\0') {
local_58 = 1;
ForEachSurvivor<PZSpawnMusic>((PZSpawnMusic *)&local_58);
Vocalize(this,"SmokerZombie.Alert",0.0,0.0);
}
}
else {
iVar23 = CBaseEntity::GetTeamNumber((CBaseEntity *)this);
if ((iVar23 == 3) && (iVar23 = (**(code **)(*(int *)this + 0x544))(this), iVar23 == 3)) {
cVar9 = (**(code **)(*(int *)this + 0x558))(this);
if (cVar9 == '\0') {
local_58 = 3;
ForEachSurvivor<PZSpawnMusic>((PZSpawnMusic *)&local_58);
Vocalize(this,"HunterZombie.Alert",0.0,0.0);
}
}
else {
iVar23 = CBaseEntity::GetTeamNumber((CBaseEntity *)this);
/* try { // try from 009d608e to 009d6146 has its CatchHandler @ 009d6161 */
if ((iVar23 == 3) && (iVar23 = (**(code **)(*(int *)this + 0x544))(this), iVar23 == 5)) {
cVar9 = (**(code **)(*(int *)this + 0x558))(this);
if (cVar9 == '\0') {
local_58 = 5;
ForEachSurvivor<PZSpawnMusic>((PZSpawnMusic *)&local_58);
Vocalize(this,"JockeyZombie.Alert",0.0,0.0);
}
}
else {
iVar23 = CBaseEntity::GetTeamNumber((CBaseEntity *)this);
if ((iVar23 == 3) && (iVar23 = (**(code **)(*(int *)this + 0x544))(this), iVar23 == 6))
{
cVar9 = (**(code **)(*(int *)this + 0x558))(this);
if (cVar9 == '\0') {
local_58 = 6;
ForEachSurvivor<PZSpawnMusic>((PZSpawnMusic *)&local_58);
Vocalize(this,"ChargerZombie.Alert",0.0,0.0);
}
}
else {
iVar23 = CBaseEntity::GetTeamNumber((CBaseEntity *)this);
if ((iVar23 == 3) && (iVar23 = (**(code **)(*(int *)this + 0x544))(this), iVar23 == 4)
) {
cVar9 = (**(code **)(*(int *)this + 0x558))(this);
if (cVar9 == '\0') {
local_58 = 4;
ForEachSurvivor<PZSpawnMusic>((PZSpawnMusic *)&local_58);
Vocalize(this,"SpitterZombie.Alert",0.0,0.0);
}
}
else {
iVar23 = CBaseEntity::GetTeamNumber((CBaseEntity *)this);
if (((iVar23 == 3) &&
(iVar23 = (**(code **)(*(int *)this + 0x544))(this), iVar23 == 8)) &&
(*(char *)(TheZombieManager + 5) == '\0')) {
iVar23 = (**(code **)(*(int *)this + 0x148))(this);
if (iVar23 == 0) {
ForEachTerrorPlayer<BossAttackMusic>((BossAttackMusic *)&local_58);
}
piVar18 = (int *)(**(code **)(*gameeventmanager + 0x1c))
(gameeventmanager,"tank_spawn",0,0);
if (piVar18 != (int *)0x0) {
pcVar4 = *(code **)(*piVar18 + 0x30);
uVar11 = (**(code **)(*engine + 0x40))(engine,*(undefined4 *)(this + 0x30));
(*pcVar4)(piVar18,"userid",uVar11);
if (*(int *)(this + 0x30) == 0) {
iVar23 = 0;
}
else {
iVar23 = *(int *)(this + 0x30) - *(int *)(gpGlobals + 0x58) >> 4;
}
(**(code **)(*piVar18 + 0x30))(piVar18,"tankid",iVar23);
(**(code **)(*gameeventmanager + 0x20))(gameeventmanager,piVar18,0);
}
}
}
}
}
}
}
}
}
else {
/* try { // try from 009d41e3 to 009d45ef has its CatchHandler @ 009d618e */
ResetClassSpawnSystem(this);
*(undefined4 *)(this + 0x2d48) = 0;
}
CCollisionProperty::SetSurroundingBoundsType((CCollisionProperty *)(this + 0x194),7,0,0);
(**(code **)(*(int *)this + 0x38c))(this);
uVar2 = *(uint *)(this + 0x30bc);
if (((uVar2 != 0xffffffff) &&
(puVar12 = g_pEntityList + (uVar2 & 0xfff) * 0x10, puVar12 != (undefined *)0xfffffffc)) &&
((*(uint *)(puVar12 + 8) == uVar2 >> 0xc &&
(*(CBaseEntity **)(puVar12 + 4) != (CBaseEntity *)0x0)))) {
/* try { // try from 009d5b28 to 009d5b2c has its CatchHandler @ 009d618e */
UTIL_Remove(*(CBaseEntity **)(puVar12 + 4));
}
piVar18 = (int *)CBaseAbility::CreateForPlayer(this);
if (this[0x6c] == (CTerrorPlayer)0x0) {
pCVar3 = *(CBaseEdict **)(this + 0x30);
if (pCVar3 != (CBaseEdict *)0x0) {
*(uint *)pCVar3 = *(uint *)pCVar3 | 0x101;
iVar23 = CBaseEdict::GetChangeAccessor(pCVar3);
*(undefined2 *)(iVar23 + 2) = 0;
}
}
else {
this[0x70] = (CTerrorPlayer)((byte)this[0x70] | 1);
}
if (piVar18 == (int *)0x0) {
*(undefined4 *)(this + 0x30bc) = 0xffffffff;
}
else {
puVar17 = (undefined4 *)(**(code **)(*piVar18 + 0xc))(piVar18);
*(undefined4 *)(this + 0x30bc) = *puVar17;
}
if (((((this[0x3fe1] != (CTerrorPlayer)0x0) &&
(uVar2 = *(uint *)(this + 0x30bc), uVar2 != 0xffffffff)) &&
(puVar12 = g_pEntityList + (uVar2 & 0xfff) * 0x10, puVar12 != (undefined *)0xfffffffc)) &&
((*(uint *)(puVar12 + 8) == uVar2 >> 0xc &&
(*(CBaseAbility **)(puVar12 + 4) != (CBaseAbility *)0x0)))) &&
(0.0 <= *(float *)(this + 0x3fe8))) {
/* try { // try from 009d5d00 to 009d5d04 has its CatchHandler @ 009d618e */
CBaseAbility::StartActivationTimer
(*(CBaseAbility **)(puVar12 + 4),*(float *)(this + 0x3fe8),*(float *)(this + 0x3fec));
}
this[0x39e4] = (CTerrorPlayer)0x0;
cVar9 = CTerrorGameRules::HasPlayerControlledZombies();
if (cVar9 == '\0') {
/* try { // try from 009d4cd9 to 009d4ddd has its CatchHandler @ 009d618e */
(**(code **)(*(int *)this + 0x5f8))(this,0);
}
else {
*(float *)(this + 0x3fbc) = *(float *)(gpGlobals + 0xc) + 0.5;
}
if (((*(int *)(this + 0x30d8) != 0) &&
(iVar23 = CBaseEntity::GetTeamNumber((CBaseEntity *)this), iVar23 == 2)) &&
((*(byte *)(*(int *)(this + 0x30d8) + 0x12d) & 8) != 0)) {
/* try { // try from 009d59b4 to 009d5a9c has its CatchHandler @ 009d618e */
iVar23 = TerrorNavMesh::GetCheckpoint
((TerrorNavMesh *)TheNavMesh,(Vector *)(*(int *)(this + 0x30d8) + 0x2c));
/* try { // try from 009d5e6e to 009d5ead has its CatchHandler @ 009d618e */
if (((iVar23 == 0) || (*(char *)(iVar23 + 0x5f) != '\0')) ||
(cVar9 = CDirector::IsMissionStartMap(TheDirector), cVar9 == '\0')) {
iVar23 = TerrorNavMesh::GetLastCheckpoint((TerrorNavMesh *)TheNavMesh);
if (iVar23 == 0) {
/* try { // try from 009d6065 to 009d6083 has its CatchHandler @ 009d618e */
cVar9 = CTerrorGameRules::IsSurvivalMode();
if (cVar9 == '\0') {
(**(code **)(*(int *)(this + 0x3ab4) + 0x38))(this + 0x3ab4);
}
}
else {
cVar9 = CTerrorGameRules::IsSurvivalMode();
if (cVar9 == '\0') {
(**(code **)(*(int *)(this + 0x3ab4) + 0x34))(this + 0x3ab4);
}
}
}
else if (this[0x3e41] == (CTerrorPlayer)0x0) {
this[0x3e41] = (CTerrorPlayer)0x1;
cVar9 = CTerrorGameRules::IsSurvivalMode();
if (cVar9 == '\0') {
(**(code **)(*(int *)(this + 0x3ab4) + 0x20))(this + 0x3ab4);
}
}
}
iVar23 = CBaseEntity::GetTeamNumber((CBaseEntity *)this);
/* try { // try from 009d5c6f to 009d5c8d has its CatchHandler @ 009d618e */
if ((iVar23 == 2) && (cVar9 = CTerrorGameRules::IsSurvivalMode(), cVar9 != '\0')) {
(**(code **)(*(int *)(this + 0x3ab4) + 0x28))(this + 0x3ab4);
}
*(undefined4 *)(this + 0x3ed4) = 0xffffffff;
uVar2 = *(uint *)(this + 0x3e64);
*(undefined4 *)(this + 0x3ed8) = 0;
puVar12 = g_pEntityList;
if (((uVar2 != 0xffffffff) &&
(puVar14 = g_pEntityList + (uVar2 & 0xfff) * 0x10, puVar14 != (undefined *)0xfffffffc)) &&
((*(uint *)(puVar14 + 8) == uVar2 >> 0xc && (*(int *)(puVar14 + 4) != 0)))) {
if (this[0x6c] == (CTerrorPlayer)0x0) {
pCVar3 = *(CBaseEdict **)(this + 0x30);
if (pCVar3 != (CBaseEdict *)0x0) {
*(uint *)pCVar3 = *(uint *)pCVar3 | 0x101;
iVar23 = CBaseEdict::GetChangeAccessor(pCVar3);
*(undefined2 *)(iVar23 + 2) = 0;
puVar12 = g_pEntityList;
}
}
else {
this[0x70] = (CTerrorPlayer)((byte)this[0x70] | 1);
}
*(undefined4 *)(this + 0x3e64) = 0xffffffff;
}
uVar2 = *(uint *)(this + 0x3e68);
if ((((uVar2 != 0xffffffff) &&
(puVar12 = puVar12 + (uVar2 & 0xfff) * 0x10, puVar12 != (undefined *)0xfffffffc)) &&
(*(uint *)(puVar12 + 8) == uVar2 >> 0xc)) && (*(int *)(puVar12 + 4) != 0)) {
if (this[0x6c] == (CTerrorPlayer)0x0) {
pCVar3 = *(CBaseEdict **)(this + 0x30);
if (pCVar3 != (CBaseEdict *)0x0) {
*(uint *)pCVar3 = *(uint *)pCVar3 | 0x101;
iVar23 = CBaseEdict::GetChangeAccessor(pCVar3);
*(undefined2 *)(iVar23 + 2) = 0;
}
}
else {
this[0x70] = (CTerrorPlayer)((byte)this[0x70] | 1);
}
*(undefined4 *)(this + 0x3e68) = 0xffffffff;
}
if (this[0x3e78] != (CTerrorPlayer)0x0) {
if (this[0x6c] == (CTerrorPlayer)0x0) {
pCVar3 = *(CBaseEdict **)(this + 0x30);
if (pCVar3 != (CBaseEdict *)0x0) {
*(uint *)pCVar3 = *(uint *)pCVar3 | 0x101;
iVar23 = CBaseEdict::GetChangeAccessor(pCVar3);
*(undefined2 *)(iVar23 + 2) = 0;
}
}
else {
this[0x70] = (CTerrorPlayer)((byte)this[0x70] | 1);
}
this[0x3e78] = (CTerrorPlayer)0x0;
}
if (*(float *)(this + 0x3f30) == -1.0) {
iVar23 = *(int *)(this + 0x3f28);
}
else {
(**(code **)(*(int *)(this + 0x3f2c) + 4))(this + 0x3f2c,this + 0x3f30);
*(undefined4 *)(this + 0x3f30) = 0xbf800000;
iVar23 = *(int *)(this + 0x3f28);
}
if (iVar23 != 0) {
if (this[0x6c] == (CTerrorPlayer)0x0) {
pCVar3 = *(CBaseEdict **)(this + 0x30);
if (pCVar3 != (CBaseEdict *)0x0) {
*(uint *)pCVar3 = *(uint *)pCVar3 | 0x101;
iVar23 = CBaseEdict::GetChangeAccessor(pCVar3);
*(undefined2 *)(iVar23 + 2) = 0;
}
}
else {
this[0x70] = (CTerrorPlayer)((byte)this[0x70] | 1);
}
*(undefined4 *)(this + 0x3f28) = 0;
}
if (*(float *)(this + 0x3e74) != -1.0) {
(**(code **)(*(int *)(this + 0x3e6c) + 4))(this + 0x3e6c,this + 0x3e74);
*(undefined4 *)(this + 0x3e74) = 0xbf800000;
}
if (*(float *)(this + 0x3ecc) != -1.0) {
(**(code **)(*(int *)(this + 0x3ec4) + 4))(this + 0x3ec4,this + 0x3ecc);
*(undefined4 *)(this + 0x3ecc) = 0xbf800000;
}
*(undefined4 *)(this + 0x3ec0) = 0;
*(undefined4 *)(this + 0x3ebc) = 0;
*(undefined4 *)(this + 0x3eb8) = 0;
this[0x3fe1] = (CTerrorPlayer)0x0;
this[0x3ab2] = (CTerrorPlayer)0x0;
this[0x400d] = (CTerrorPlayer)0x1;
if (this[0x3f5c] == (CTerrorPlayer)0x0) {
CheckForFirstSpawn(this);
}
StopTrackedSound(this,"Player.Heartbeat");
Vocalizer::OnSpawn(*(Vocalizer **)(this + 0x3110));
pfVar19 = (float *)(**(code **)(*(int *)this + 0x238))(this);
fVar29 = *pfVar19;
if (((fVar29 != *(float *)(this + 0x2990)) ||
(fVar26 = pfVar19[1], fVar26 != *(float *)(this + 0x2994))) ||
(pfVar19[2] != *(float *)(this + 0x2998))) {
if (this[0x6c] == (CTerrorPlayer)0x0) {
pCVar3 = *(CBaseEdict **)(this + 0x30);
if (pCVar3 != (CBaseEdict *)0x0) {
*(uint *)pCVar3 = *(uint *)pCVar3 | 0x101;
/* try { // try from 009d46a2 to 009d46a6 has its CatchHandler @ 009d618e */
iVar23 = CBaseEdict::GetChangeAccessor(pCVar3);
*(undefined2 *)(iVar23 + 2) = 0;
fVar29 = *pfVar19;
}
}
else {
this[0x70] = (CTerrorPlayer)((byte)this[0x70] | 1);
fVar29 = *pfVar19;
}
*(float *)(this + 0x2990) = fVar29;
fVar26 = pfVar19[1];
*(float *)(this + 0x2994) = fVar26;
*(float *)(this + 0x2998) = pfVar19[2];
}
(**(code **)(**(int **)(this + 0x2910) + 0xc))(*(int **)(this + 0x2910),fVar26,fVar29);
this_00 = (CAmmoDef *)GetAmmoDef();
minigunBulletType = CAmmoDef::Index(this_00,"AMMO_TYPE_MINIGUN");
this[0x3f5d] = (CTerrorPlayer)0x0;
if (*(float *)(this + 0x3f68) != -1.0) {
(**(code **)(*(int *)(this + 0x3f60) + 4))(this + 0x3f60,this + 0x3f68);
*(undefined4 *)(this + 0x3f68) = 0xbf800000;
}
iVar23 = CBaseEntity::GetTeamNumber((CBaseEntity *)this);
if (iVar23 == 3) {
uVar11 = GetClassString(this);
}
else {
uVar11 = SurvivorCharacterName(*(undefined4 *)(this + 0x2ba0));
}
uVar20 = (**(code **)(*(int *)this + 0xb8))(this);
UTIL_LogPrintf("%s spawned as a %s\n",uVar20,uVar11);
TerrorNavMesh::OnPlayerSpawned((TerrorNavMesh *)TheNavMesh,this);
cVar9 = (**(code **)(*(int *)this + 0x558))(this);
if ((cVar9 == '\0') &&
(piVar18 = (int *)(**(code **)(*gameeventmanager + 0x1c))(gameeventmanager,"player_spawn",0,0),
piVar18 != (int *)0x0)) {
pcVar4 = *(code **)(*piVar18 + 0x30);
uVar11 = (**(code **)(*engine + 0x40))(engine,*(undefined4 *)(this + 0x30));
(*pcVar4)(piVar18,"userid",uVar11);
(**(code **)(*gameeventmanager + 0x20))(gameeventmanager,piVar18,0);
}
iVar23 = CBaseEntity::GetTeamNumber((CBaseEntity *)this);
/* try { // try from 009d56db to 009d576f has its CatchHandler @ 009d618e */
if (((iVar23 == 3) && (iVar23 = CBaseEntity::GetTeamNumber((CBaseEntity *)this), iVar23 == 3)) &&
(iVar23 = (**(code **)(*(int *)this + 0x544))(this), iVar23 == 8)) {
lVar28 = (longdouble)CountdownTimer::Now();
if ((float)lVar28 + 0.5 != *(float *)(this + 0x3f8c)) {
/* try { // try from 009d6011 to 009d6013 has its CatchHandler @ 009d618e */
(**(code **)(*(int *)(this + 0x3f84) + 4))(pCVar25,this + 0x3f8c);
*(float *)(this + 0x3f8c) = (float)lVar28 + 0.5;
}
if (*(float *)(this + 0x3f88) != 0.5) {
(**(code **)(*(int *)(this + 0x3f84) + 4))(pCVar25,this + 0x3f88);
*(undefined4 *)(this + 0x3f88) = 0x3f000000;
}
}
cVar9 = CTerrorGameRules::IsVersusMode();
if (cVar9 != '\0') {
CTerrorGameRules::RecomputeTeamScores(g_pGameRules,false);
}
if (*(int *)(this + 0x3110) != 0) {
*(undefined1 *)(*(int *)(this + 0x3110) + 0x120) = 0;
}
CRecipientFilter::~CRecipientFilter(local_3c);
iVar23 = _DAT_0105db00;
if (((DAT_0105d158 == '\0') || (_DAT_0105d154 != 0)) &&
(iVar13 = ThreadGetCurrentId(), iVar23 == iVar13)) {
cVar9 = CVProfNode::ExitScope();
if (cVar9 != '\0') {
_DAT_0105d15c = (int *)_DAT_0105d15c[0x19];
}
DAT_0105d158 = _DAT_0105d15c == (int *)0x105d160;
}
if (local_40 != 0) {
(**(code **)(local_40 + 0x54))(local_40,local_48,local_44,0,0,0);
}
(**(code **)(*piVar6 + 0x6c))(piVar6);
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.