L L4D2node

CTerrorPlayer::UpdatePounce

0x009f88d0 · 4453 bytes · __thiscall

_ZN13CTerrorPlayer12UpdatePounceEv

Decompiled

undefined (1 param)

/* CTerrorPlayer::UpdatePounce() */

void __thiscall CTerrorPlayer::UpdatePounce(CTerrorPlayer *this)

{
  CTerrorPlayer *pCVar1;
  float fVar2;
  float fVar3;
  int *piVar4;
  code *pcVar5;
  char cVar6;
  char cVar7;
  int iVar8;
  uint uVar9;
  QAngle *pQVar10;
  int iVar11;
  undefined4 uVar12;
  undefined *puVar13;
  undefined *puVar14;
  float *pfVar15;
  float *pfVar16;
  CBaseEntity *pCVar17;
  longdouble lVar18;
  float fVar19;
  float fVar20;
  float fVar21;
  float fVar22;
  float local_180;
  float local_17c;
  float local_178;
  float local_174;
  float local_170;
  float local_16c;
  float local_168;
  float local_164;
  float local_160;
  float local_15c;
  float local_158;
  float local_154;
  float local_150;
  float local_14c;
  float local_148;
  float local_144;
  float local_140;
  float local_13c;
  float local_138;
  Vector local_130 [12];
  float local_124;
  float local_120;
  float local_11c;
  CBaseEntity *local_e4;
  float local_dc;
  float local_d8;
  float local_d4;
  float local_7c;
  float local_78;
  float local_74;
  undefined4 local_70;
  float local_6c;
  float local_68;
  float local_64;
  float local_60;
  float local_5c;
  undefined4 local_58;
  undefined4 local_54;
  undefined4 local_50;
  undefined4 local_4c;
  int local_48;
  undefined4 local_44;
  undefined4 local_40;
  undefined4 local_3c;
  undefined4 local_38;
  undefined2 local_34;
  undefined4 local_30;
  undefined4 local_2c;
  undefined4 local_28;
  undefined1 local_24;
  undefined1 local_23;
  
  iVar8 = CBaseEntity::GetTeamNumber((CBaseEntity *)this);
  cVar6 = IsASurvivorTeam(iVar8);
  if (((cVar6 == '\0') || (*(float *)(this + 0x3ed8) <= 0.0)) ||
     (*(float *)(gpGlobals + 0xc) <= *(float *)(this + 0x3ed8))) {
    uVar9 = *(uint *)(this + 0x3e64);
    pCVar17 = (CBaseEntity *)0x0;
    puVar13 = g_pEntityList;
    if (uVar9 != 0xffffffff) goto LAB_009f8af7;
  }
  else {
    uVar9 = *(uint *)(this + 0x3ed4);
    if (((((((uVar9 != 0xffffffff) &&
            (puVar13 = g_pEntityList + (uVar9 & 0xfff) * 0x10, puVar13 != (undefined *)0xfffffffc))
           && ((*(uint *)(puVar13 + 8) == uVar9 >> 0xc &&
               ((pCVar17 = *(CBaseEntity **)(puVar13 + 4), pCVar17 != (CBaseEntity *)0x0 &&
                (iVar8 = CBaseEntity::GetTeamNumber(pCVar17), iVar8 == 3)))))) &&
          (iVar8 = (**(code **)(*(int *)pCVar17 + 0x544))(), iVar8 == 3)) &&
         (((cVar6 = (**(code **)(*(int *)pCVar17 + 300))(), cVar6 != '\0' &&
           (cVar6 = (**(code **)(*(int *)pCVar17 + 0x558))(), cVar6 == '\0')) &&
          (this[0x39f1] == (CTerrorPlayer)0x0)))) &&
        (((uVar9 = *(uint *)(pCVar17 + 0x3e64), uVar9 == 0xffffffff ||
          (puVar13 = g_pEntityList + (uVar9 & 0xfff) * 0x10, puVar13 == (undefined *)0xfffffffc)) ||
         ((*(uint *)(puVar13 + 8) != uVar9 >> 0xc || (*(int *)(puVar13 + 4) == 0)))))) &&
       (cVar6 = IsStaggering((CTerrorPlayer *)pCVar17), cVar6 == '\0')) {
      OnShovedByLunge(this,(CTerrorPlayer *)pCVar17,false);
      cVar6 = (**(code **)(*(int *)pCVar17 + 300))();
      if ((cVar6 != '\0') && (cVar6 = IsStaggering((CTerrorPlayer *)pCVar17), cVar6 == '\0')) {
        OnPouncedOnSurvivor((CTerrorPlayer *)pCVar17,this);
      }
    }
    puVar13 = g_pEntityList;
    uVar9 = *(uint *)(this + 0x3e64);
    *(undefined4 *)(this + 0x3ed4) = 0xffffffff;
    *(undefined4 *)(this + 0x3ed8) = 0;
    if (uVar9 == 0xffffffff) {
      pCVar17 = (CBaseEntity *)0x0;
    }
    else {
LAB_009f8af7:
      pCVar17 = (CBaseEntity *)0x0;
      puVar14 = puVar13 + (uVar9 & 0xfff) * 0x10;
      if ((puVar14 != (undefined *)0xfffffffc) && (*(uint *)(puVar14 + 8) == uVar9 >> 0xc)) {
        pCVar17 = *(CBaseEntity **)(puVar14 + 4);
      }
    }
  }
  uVar9 = *(uint *)(this + 0x3e68);
  if ((((uVar9 != 0xffffffff) &&
       (puVar13 = puVar13 + (uVar9 & 0xfff) * 0x10, puVar13 != (undefined *)0xfffffffc)) &&
      (*(uint *)(puVar13 + 8) == uVar9 >> 0xc)) && (*(int *)(puVar13 + 4) != 0)) {
    CBaseEntity::SetMoveType();
  }
  cVar6 = (**(code **)(*(int *)this + 300))();
  if (((cVar6 == '\0') || (iVar8 = CBaseEntity::GetTeamNumber((CBaseEntity *)this), iVar8 != 3)) ||
     (iVar8 = (**(code **)(*(int *)this + 0x544))(), iVar8 != 3)) {
    pfVar15 = (float *)&stack0xfffffe44;
    if (pCVar17 == (CBaseEntity *)0x0) goto LAB_009f9199;
  }
  else {
    if (pCVar17 == (CBaseEntity *)0x0) {
      pfVar15 = (float *)&stack0xfffffe44;
      if (((((byte)this[0x1cb0] & 4) != 0) &&
          (cVar6 = (**(code **)(*(int *)this + 0x558))(), pfVar15 = (float *)&stack0xfffffe44,
          cVar6 == '\0')) &&
         ((uVar9 = *(uint *)(this + 0x3e64), uVar9 == 0xffffffff ||
          (((puVar13 = g_pEntityList + (uVar9 & 0xfff) * 0x10, puVar13 == (undefined *)0xfffffffc ||
            (*(uint *)(puVar13 + 8) != uVar9 >> 0xc)) ||
           (pfVar15 = (float *)&stack0xfffffe44, *(int *)(puVar13 + 4) == 0)))))) {
        pfVar15 = (float *)&stack0xfffffe44;
        if ((0.0 < *(float *)(this + 0x3120)) &&
           (lVar18 = (longdouble)IntervalTimer::Now(), pfVar15 = (float *)&stack0xfffffe44,
           (float)lVar18 - *(float *)(this + 0x3120) < 1.0)) {
          fVar19 = *(float *)(ZombiePounceSilenceRange._28_4_ + 0x2c);
          pQVar10 = (QAngle *)(**(code **)(*(int *)this + 0x238))();
          AngleVectors(pQVar10,(Vector *)&local_164);
          pfVar15 = (float *)&stack0xfffffe44;
          if (0 < *(int *)(this + 0x3140)) {
            iVar8 = 0;
            pfVar16 = (float *)&stack0xfffffe44;
            do {
              uVar9 = *(uint *)(*(int *)(this + 0x3134) + iVar8 * 4);
              pfVar15 = pfVar16;
              if (((uVar9 != 0xffffffff) &&
                  (puVar13 = g_pEntityList + (uVar9 & 0xfff) * 0x10,
                  puVar13 != (undefined *)0xfffffffc)) &&
                 ((*(uint *)(puVar13 + 8) == uVar9 >> 0xc &&
                  (piVar4 = *(int **)(puVar13 + 4), piVar4 != (int *)0x0)))) {
                *pfVar16 = (float)piVar4;
                pfVar16[-1] = 1.4654597e-38;
                iVar11 = CBaseEntity::GetTeamNumber((CBaseEntity *)*pfVar16);
                if (iVar11 == 2) {
                  iVar11 = *piVar4;
                  *pfVar16 = (float)piVar4;
                  pcVar5 = *(code **)(iVar11 + 300);
                  pfVar16[-1] = 1.465462e-38;
                  cVar6 = (*pcVar5)();
                  if (cVar6 != '\0') {
                    iVar11 = *(int *)this;
                    pfVar16[1] = (float)this;
                    *pfVar16 = (float)&local_14c;
                    pcVar5 = *(code **)(iVar11 + 0x234);
                    pfVar16[-1] = 1.4654655e-38;
                    (*pcVar5)();
                    local_13c = local_160 * 100.0 + local_148;
                    local_138 = local_15c * 100.0 + local_144;
                    local_140 = local_164 * 100.0 + local_14c;
                    iVar11 = *piVar4;
                    pfVar16[-1] = (float)piVar4;
                    pcVar5 = *(code **)(iVar11 + 0x288);
                    pfVar16[-2] = 1.4654809e-38;
                    uVar12 = (*pcVar5)();
                    pfVar16[3] = 0.0;
                    pfVar16[2] = (float)local_130;
                    pfVar16[1] = (float)&local_140;
                    *pfVar16 = (float)&local_14c;
                    pfVar16[-1] = (float)uVar12;
                    pfVar16[-2] = 1.4654882e-38;
                    CalcClosestPointOnLineSegment
                              ((Vector *)pfVar16[-1],(Vector *)*pfVar16,(Vector *)pfVar16[1],
                               (Vector *)pfVar16[2],(float *)pfVar16[3]);
                    if ((*(byte *)((int)piVar4 + 0x14d) & 8) != 0) {
                      pfVar16[-1] = (float)piVar4;
                      pfVar16[-2] = 1.4654905e-38;
                      CBaseEntity::CalcAbsolutePosition((CBaseEntity *)pfVar16[-1]);
                    }
                    local_14c = (float)piVar4[0xb8];
                    local_148 = (float)piVar4[0xb9];
                    local_144 = (float)piVar4[0xba];
                    iVar11 = piVar4[0x65];
                    pfVar16[-1] = (float)(piVar4 + 0x65);
                    pcVar5 = *(code **)(iVar11 + 8);
                    pfVar16[-2] = 1.4655032e-38;
                    local_140 = local_14c;
                    local_13c = local_148;
                    local_138 = local_144;
                    iVar11 = (*pcVar5)();
                    fVar2 = *(float *)(iVar11 + 8);
                    pfVar16[3] = 0.0;
                    pfVar16[2] = (float)&local_158;
                    pfVar16[1] = (float)&local_140;
                    *pfVar16 = (float)&local_14c;
                    local_138 = local_138 + fVar2;
                    pfVar16[-1] = (float)local_130;
                    pfVar16[-2] = 1.4655134e-38;
                    CalcClosestPointOnLineSegment
                              ((Vector *)pfVar16[-1],(Vector *)*pfVar16,(Vector *)pfVar16[1],
                               (Vector *)pfVar16[2],(float *)pfVar16[3]);
                    iVar11 = *(int *)this;
                    pfVar16[-1] = (float)&local_7c;
                    *pfVar16 = (float)this;
                    pcVar5 = *(code **)(iVar11 + 0x234);
                    pfVar16[-2] = 1.4655159e-38;
                    (*pcVar5)();
                    pfVar16[-2] = (float)&local_dc;
                    local_dc = local_158 - local_7c;
                    local_d8 = local_154 - local_78;
                    local_d4 = local_150 - local_74;
                    pfVar16[-3] = 1.4655271e-38;
                    lVar18 = (longdouble)VectorNormalize((Vector *)pfVar16[-2]);
                    pfVar15 = pfVar16 + -2;
                    if (((float)lVar18 <= fVar19) &&
                       (pfVar15 = pfVar16 + -2,
                       0.8 <= local_160 * local_d8 + local_164 * local_dc + local_15c * local_d4)) {
                      pfVar16[-2] = (float)(this + 0x3098);
                      pCVar1 = this + 0x3e90;
                      pfVar16[-3] = 1.4655442e-38;
                      lVar18 = (longdouble)CountdownTimer::Now();
                      if ((float)lVar18 < *(float *)(this + 0x30a0)) {
                        pfVar16[-2] = (float)pCVar1;
                        pfVar16[-3] = 1.465721e-38;
                        lVar18 = (longdouble)CountdownTimer::Now();
                        pfVar15 = pfVar16 + -2;
                        if ((float)lVar18 < *(float *)(this + 0x3e98)) break;
                      }
                      pfVar16[-1] = 4.5;
                      pfVar16[-2] = 3.0;
                      pfVar16[-3] = 1.4655508e-38;
                      lVar18 = (longdouble)RandomFloat();
                      pfVar16[-1] = (float)"HunterZombie.Warn";
                      pfVar16[-2] = (float)this;
                      pfVar16[1] = (float)lVar18;
                      *pfVar16 = (float)lVar18;
                      pfVar16[-3] = 1.4655567e-38;
                      Vocalize((CTerrorPlayer *)pfVar16[-2],(char *)pfVar16[-1],*pfVar16,pfVar16[1])
                      ;
                      fVar19 = *(float *)(this + 0x30a0);
                      pfVar16[-2] = (float)(this + 0x3098);
                      pfVar16[-3] = 1.46556e-38;
                      lVar18 = (longdouble)CountdownTimer::Now();
                      pfVar16[-2] = (float)pCVar1;
                      fVar19 = fVar19 - (float)lVar18;
                      pfVar16[-3] = 1.465566e-38;
                      lVar18 = (longdouble)CountdownTimer::Now();
                      if ((float)lVar18 + fVar19 != *(float *)(this + 0x3e98)) {
                        iVar8 = *(int *)(this + 0x3e90);
                        pfVar16[-1] = (float)(this + 0x3e98);
                        pfVar16[-2] = (float)pCVar1;
                        pcVar5 = *(code **)(iVar8 + 4);
                        pfVar16[-3] = 1.4655762e-38;
                        (*pcVar5)();
                        *(float *)(this + 0x3e98) = (float)lVar18 + fVar19;
                      }
                      pfVar15 = pfVar16 + -2;
                      if (fVar19 != *(float *)(this + 0x3e94)) {
                        iVar8 = *(int *)(this + 0x3e90);
                        pfVar16[-2] = (float)pCVar1;
                        pfVar16[-1] = (float)(this + 0x3e94);
                        pcVar5 = *(code **)(iVar8 + 4);
                        pfVar16[-3] = 1.4655856e-38;
                        (*pcVar5)();
                        *(float *)(this + 0x3e94) = fVar19;
                        pfVar15 = pfVar16 + -2;
                      }
                      goto LAB_009f9199;
                    }
                  }
                }
              }
              iVar8 = iVar8 + 1;
              pfVar16 = pfVar15;
            } while (iVar8 < *(int *)(this + 0x3140));
          }
        }
        *pfVar15 = (float)(this + 0x3098);
        pfVar15[-1] = 1.4655912e-38;
        lVar18 = (longdouble)CountdownTimer::Now();
        if (*(float *)(this + 0x30a0) <= (float)lVar18) {
          pfVar15[1] = 3.5;
          *pfVar15 = 2.0;
          pfVar15[-1] = 1.4655977e-38;
          lVar18 = (longdouble)RandomFloat();
          pfVar15[1] = (float)"HunterZombie.Growl";
          *pfVar15 = (float)this;
          pfVar15[3] = (float)lVar18;
          pfVar15[2] = (float)lVar18;
          pfVar15[-1] = 1.4656036e-38;
          Vocalize((CTerrorPlayer *)*pfVar15,(char *)pfVar15[1],pfVar15[2],pfVar15[3]);
        }
      }
LAB_009f9199:
      if (this[0x3e79] == (CTerrorPlayer)0x0) {
        return;
      }
      goto LAB_009f9072;
    }
    lVar18 = (longdouble)CountdownTimer::Now();
    if (*(float *)(this + 0x30a0) <= (float)lVar18) {
      if (this[0x3e79] == (CTerrorPlayer)0x0) {
        lVar18 = (longdouble)RandomFloat();
        Vocalize(this,"HunterZombie.Warn",(float)lVar18,0.0);
      }
      else {
        Vocalize(this,"HunterZombie.Pounce.shred",0.0,0.0);
      }
    }
  }
  pfVar15 = (float *)&stack0xfffffe44;
  if (this[0x186] != (CTerrorPlayer)0x8) {
    if (((byte)pCVar17[0x14d] & 8) != 0) {
      CBaseEntity::CalcAbsolutePosition(pCVar17);
    }
    fVar19 = *(float *)(pCVar17 + 0x2e0);
    fVar2 = *(float *)(pCVar17 + 0x2e4);
    fVar3 = *(float *)(pCVar17 + 0x2e8);
    if (((byte)this[0x14d] & 8) != 0) {
      CBaseEntity::CalcAbsolutePosition((CBaseEntity *)this);
    }
    local_178 = (*(float *)(this + 0x2e4) - fVar2) * 0.8 + fVar2;
    local_174 = (*(float *)(this + 0x2e8) - fVar3) * 0.8 + fVar3;
    local_17c = (*(float *)(this + 0x2e0) - fVar19) * 0.8 + fVar19;
    CBaseEntity::SetAbsOrigin((CBaseEntity *)this,(Vector *)&local_17c);
    CBaseEntity::SetAbsVelocity((CBaseEntity *)this,(Vector *)&vec3_origin);
    OnKnockedDown();
    lVar18 = (longdouble)CountdownTimer::Now();
    if ((float)lVar18 < *(float *)(this + 0x3e74)) {
      return;
    }
    (**(code **)(*(int *)pCVar17 + 0x234))();
    (**(code **)(*(int *)this + 0x478))();
    pfVar15 = (float *)&stack0xfffffe3c;
    local_170 = local_dc - local_7c;
    local_16c = local_d8 - local_78;
    local_168 = local_d4 - local_74;
    if (local_16c * local_16c + local_170 * local_170 <= 10000.0) {
      fVar19 = *(float *)(ZombiePounceDamageInterval._28_4_ + 0x2c);
      lVar18 = (longdouble)CountdownTimer::Now();
      if ((float)lVar18 + fVar19 != *(float *)(this + 0x3e74)) {
        (**(code **)(*(int *)(this + 0x3e6c) + 4))();
        *(float *)(this + 0x3e74) = (float)lVar18 + fVar19;
      }
      if (fVar19 != *(float *)(this + 0x3e70)) {
        (**(code **)(*(int *)(this + 0x3e6c) + 4))();
        *(float *)(this + 0x3e70) = fVar19;
      }
      cVar6 = (**(code **)(*(int *)pCVar17 + 0x7e8))();
      local_180 = *(float *)(ZombiePounceDamage._28_4_ + 0x2c);
      iVar8 = GetDifficulty();
      if (iVar8 == 2) {
        local_180 = local_180 + local_180;
      }
      else if (iVar8 == 3) {
        local_180 = local_180 * 3.0;
      }
      cVar7 = (**(code **)(*(int *)pCVar17 + 0x7e8))();
      if (cVar7 != '\0') {
        fVar19 = *(float *)(SurvivorIncapacitatedHealth._28_4_ + 0x2c);
        iVar8 = (**(code **)(*(int *)pCVar17 + 0x1fc))();
        local_180 = (fVar19 / (float)iVar8) * local_180;
      }
      CTakeDamageInfo::CTakeDamageInfo
                ((CTakeDamageInfo *)&local_dc,(CBaseEntity *)this,(CBaseEntity *)this,local_180,0x80
                 ,0);
      (**(code **)(*(int *)this + 0x478))();
      CalculateMeleeDamageForce
                ((CTakeDamageInfo *)&local_dc,(Vector *)&local_170,(Vector *)&local_7c,1.0);
      CBaseEntity::TakeDamage(pCVar17,(CTakeDamageInfo *)&local_dc);
      cVar7 = (**(code **)(*(int *)pCVar17 + 0x7e8))();
      if (cVar6 != cVar7) {
        lVar18 = (longdouble)CountdownTimer::Now();
        if ((float)lVar18 + 2.0 != *(float *)(pCVar17 + 0x30a0)) {
          (**(code **)(*(int *)(pCVar17 + 0x3098) + 4))();
          *(float *)(pCVar17 + 0x30a0) = (float)lVar18 + 2.0;
        }
        if (*(float *)(pCVar17 + 0x309c) != 2.0) {
          (**(code **)(*(int *)(pCVar17 + 0x3098) + 4))();
          *(undefined4 *)(pCVar17 + 0x309c) = 0x40000000;
        }
      }
      CBasePlayer::EyeVectors((CBasePlayer *)this,(Vector *)&local_164,(Vector *)0x0,(Vector *)0x0);
      VectorNormalize((Vector *)&local_164);
      fVar21 = local_164 * 80.0;
      fVar20 = local_160 * 80.0;
      fVar22 = local_15c - 0.2;
      local_15c = fVar22;
      (**(code **)(*(int *)this + 0x234))();
      fVar3 = local_144;
      fVar2 = local_148;
      fVar19 = local_14c;
      (**(code **)(*(int *)this + 0x234))();
      pfVar15 = (float *)&stack0xfffffe30;
      local_7c = local_158;
      local_78 = local_154;
      local_6c = (fVar21 - local_158) + fVar19;
      local_74 = local_150;
      local_68 = (fVar20 - local_154) + fVar2;
      local_3c = 0;
      local_64 = (fVar3 - local_150) + fVar22 * 80.0;
      local_44 = 0;
      local_48 = 0;
      local_4c = 0;
      local_54 = 0;
      local_58 = 0;
      local_5c = 0.0;
      local_38._0_2_ =
           CONCAT11(local_68 * local_68 + local_6c * local_6c + local_64 * local_64 != 0.0,1);
      CTraceFilterSimple::CTraceFilterSimple
                ((CTraceFilterSimple *)&local_140,(IHandleEntity *)this,0,
                 (_func_bool_IHandleEntity_ptr_int *)0x0);
      (**(code **)(*enginetrace + 0x14))();
      if (*(int *)(r_visualizetraces._28_4_ + 0x30) != 0) {
        DebugDrawLine(local_130,(Vector *)&local_124,0xff,0,0,true,-1.0);
      }
      iVar8 = IPredictionSystem::g_pPredictionSystems;
      if (local_e4 == pCVar17) {
        for (; iVar8 != 0; iVar8 = *(int *)(iVar8 + 4)) {
          *(int *)(iVar8 + 0x10) = *(int *)(iVar8 + 0x10) + 1;
        }
                    /* try { // try from 009f9760 to 009f9889 has its CatchHandler @ 009f9a87 */
        iVar8 = (**(code **)(*(int *)local_e4 + 0x138))();
        UTIL_BloodDecalTrace((CGameTrace *)local_130,iVar8);
        local_24 = 0;
        local_34 = 0;
        local_7c = local_124;
        local_70 = 0;
        local_78 = local_120;
        local_23 = 0;
        local_74 = local_11c;
        local_60 = -local_160;
        local_5c = -local_15c;
        local_6c = 0.0;
        local_64 = -local_164;
        local_68 = 0.0;
        local_58 = 0;
        local_54 = 0;
        local_50 = 0;
        local_4c = 0;
        local_44 = 0x3f800000;
        local_38 = 0;
        local_3c = 0;
        local_30 = 0;
        local_2c = 0;
        local_28 = 0;
        if ((local_e4 == (CBaseEntity *)0x0) || (*(int *)(local_e4 + 0x30) == 0)) {
          local_48 = 0;
        }
        else {
          local_48 = *(int *)(local_e4 + 0x30) - *(int *)(gpGlobals + 0x58) >> 4;
        }
        local_40 = 0x41a00000;
        DispatchEffect("csblood",(CEffectData *)&local_7c);
        for (iVar8 = IPredictionSystem::g_pPredictionSystems; iVar8 != 0;
            iVar8 = *(int *)(iVar8 + 4)) {
          *(int *)(iVar8 + 0x10) = *(int *)(iVar8 + 0x10) + -1;
        }
      }
      BloodyHands_Increment(this);
      (**(code **)(*(int *)this + 0x8f0))();
      (**(code **)(*(int *)pCVar17 + 0x8f0))();
      cVar6 = (**(code **)(*(int *)pCVar17 + 300))();
      if ((cVar6 != '\0') && (pCVar17[0x39f1] == (CBaseEntity)0x0)) {
        return;
      }
      BloodyHands_SetToMax(this);
    }
  }
LAB_009f9072:
  *pfVar15 = (float)this;
  pfVar15[-1] = 1.4653672e-38;
  OnPounceEnded((CTerrorPlayer *)*pfVar15);
  return;
}

SourceMod gamedata

paste into addons/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.



        

        

          

Type inference is best-effort from the C signature - sanity-check the DHooks types before shipping.

Return-type handling cheatsheet (DHookReturn)