minor changes and fixes

This commit is contained in:
rei-2
2025-10-19 15:33:31 -04:00
parent afc54e065f
commit d880c03392
11 changed files with 73 additions and 49 deletions
@@ -155,7 +155,7 @@ bool CAimbotGlobal::ShouldIgnore(CBaseEntity* pEntity, CTFPlayer* pLocal, CTFWea
if (Vars::Aimbot::General::Ignore.Value & Vars::Aimbot::General::IgnoreEnum::Friends && H::Entities.IsFriend(pPlayer->entindex())
|| Vars::Aimbot::General::Ignore.Value & Vars::Aimbot::General::IgnoreEnum::Party && H::Entities.InParty(pPlayer->entindex())
|| Vars::Aimbot::General::Ignore.Value & Vars::Aimbot::General::IgnoreEnum::Invulnerable && pPlayer->IsInvulnerable() && SDK::AttribHookValue(0, "crit_forces_victim_to_laugh", pWeapon) <= 0
|| Vars::Aimbot::General::Ignore.Value & Vars::Aimbot::General::IgnoreEnum::Invisible && pPlayer->m_flInvisibility() && pPlayer->m_flInvisibility() >= Vars::Aimbot::General::IgnoreInvisible.Value / 100.f
|| Vars::Aimbot::General::Ignore.Value & Vars::Aimbot::General::IgnoreEnum::Invisible && pPlayer->IsInvisible(Vars::Aimbot::General::IgnoreInvisible.Value / 100.f)
|| Vars::Aimbot::General::Ignore.Value & Vars::Aimbot::General::IgnoreEnum::DeadRinger && pPlayer->m_bFeignDeathReady()
|| Vars::Aimbot::General::Ignore.Value & Vars::Aimbot::General::IgnoreEnum::Taunting && pPlayer->IsTaunting()
|| Vars::Aimbot::General::Ignore.Value & Vars::Aimbot::General::IgnoreEnum::Disguised && pPlayer->InCond(TF_COND_DISGUISED))
@@ -275,10 +275,17 @@ int CAimbotHitscan::CanHit(Target_t& tTarget, CTFPlayer* pLocal, CTFWeaponBase*
vRecords = { &F::Backtrack.m_tRecord };
}
Vec3 vPeekPos = {};
float flSpread = pWeapon->GetWeaponSpread();
if (flSpread && Vars::Aimbot::General::HitscanPeek.Value)
vPeekPos = m_vEyePos + pLocal->m_vecVelocity() * TICKS_TO_TIME(-Vars::Aimbot::General::HitscanPeek.Value);
bool bPeekCheck = false;
if (Vars::Aimbot::Hitscan::PeekAmount.Value && pWeapon->GetWeaponSpread())
{
switch (Vars::Aimbot::Hitscan::PeekCheck.Value)
{
case Vars::Aimbot::Hitscan::PeekCheckEnum::Off: break;
case Vars::Aimbot::Hitscan::PeekCheckEnum::DoubletapOnly: bPeekCheck = F::Ticks.GetTicks(pWeapon); break;
case Vars::Aimbot::Hitscan::PeekCheckEnum::Always: bPeekCheck = true; break;
}
}
Vec3 vPeekPos = bPeekCheck ? m_vEyePos + pLocal->m_vecVelocity() * TICKS_TO_TIME(-Vars::Aimbot::Hitscan::PeekAmount.Value) : Vec3();
// if we're doubletapping, we can't change viewangles so work around that
static int iTargetBone = 0;
@@ -298,8 +305,8 @@ int CAimbotHitscan::CanHit(Target_t& tTarget, CTFPlayer* pLocal, CTFWeaponBase*
int iReturn = false;
for (auto pRecord : vRecords)
{
bool bRunPeekCheck = flSpread && (Vars::Aimbot::General::PeekDTOnly.Value ? F::Ticks.GetTicks(pWeapon) : true) && Vars::Aimbot::General::HitscanPeek.Value;
bool bRunPeekCheck = bPeekCheck;
if (pWeapon->GetWeaponID() == TF_WEAPON_LASER_POINTER)
{
tTarget.m_vPos = tTarget.m_pEntity->m_vecOrigin();
@@ -1188,8 +1188,8 @@ bool CAimbotProjectile::TestAngle(CTFPlayer* pLocal, CTFWeaponBase* pWeapon, Tar
bool bDidHit = false, bPrimeTime = false;
const RestoreInfo_t tOriginal = { tTarget.m_pEntity->GetAbsOrigin(), tTarget.m_pEntity->m_vecMins(), tTarget.m_pEntity->m_vecMaxs() };
tTarget.m_pEntity->SetAbsOrigin(tTarget.m_vPos);
tTarget.m_pEntity->m_vecMins() = { -24, -24, tTarget.m_pEntity->m_vecMins().z };
tTarget.m_pEntity->m_vecMaxs() = { 24, 24, tTarget.m_pEntity->m_vecMaxs().z };
tTarget.m_pEntity->m_vecMins() = { std::clamp(tTarget.m_pEntity->m_vecMins().x, -24.f, 0.f), std::clamp(tTarget.m_pEntity->m_vecMins().y, -24.f, 0.f), tTarget.m_pEntity->m_vecMins().z };
tTarget.m_pEntity->m_vecMaxs() = { std::clamp(tTarget.m_pEntity->m_vecMaxs().x, 0.f, 24.f), std::clamp(tTarget.m_pEntity->m_vecMaxs().y, 0.f, 24.f), tTarget.m_pEntity->m_vecMaxs().z };
for (int n = 1; n <= iSimTime; n++)
{
Vec3 vOld = F::ProjSim.GetOrigin();
@@ -1404,9 +1404,10 @@ int CAimbotProjectile::CanHit(Target_t& tTarget, CTFPlayer* pLocal, CTFWeaponBas
int iMaxTime = TIME_TO_TICKS(std::min(tProjInfo.m_flLifetime, Vars::Aimbot::Projectile::MaxSimulationTime.Value));
int iSplash = Vars::Aimbot::Projectile::SplashPrediction.Value && m_tInfo.m_flRadius ? Vars::Aimbot::Projectile::SplashPrediction.Value : Vars::Aimbot::Projectile::SplashPredictionEnum::Off;
int iMulti = Vars::Aimbot::Projectile::SplashMode.Value;
int iPoints = !m_tInfo.m_flGravity ? Vars::Aimbot::Projectile::SplashPointsDirect.Value : Vars::Aimbot::Projectile::SplashPointsArc.Value;
auto mDirectPoints = iSplash == Vars::Aimbot::Projectile::SplashPredictionEnum::Only ? std::unordered_map<int, Vec3>() : GetDirectPoints(tTarget);
auto vSpherePoints = !iSplash ? std::vector<std::pair<Vec3, int>>() : ComputeSphere(m_tInfo.m_flRadius + flSize, Vars::Aimbot::Projectile::SplashPoints.Value);
auto vSpherePoints = !iSplash ? std::vector<std::pair<Vec3, int>>() : ComputeSphere(m_tInfo.m_flRadius + flSize, iPoints);
#ifdef SPLASH_DEBUG4
for (auto& [vPoint, _] : vSpherePoints)
G::BoxStorage.emplace_back(tTarget.m_pEntity->m_vecOrigin() + m_tInfo.m_vTargetEye + vPoint, Vec3(-1, -1, -1), Vec3(1, 1, 1), Vec3(), I::GlobalVars->curtime + 60.f, Color_t(0, 0, 0, 0), Vars::Colors::Local.Value);
@@ -2095,9 +2096,10 @@ bool CAimbotProjectile::CanHit(Target_t& tTarget, CTFPlayer* pLocal, CTFWeaponBa
int iMaxTime = TIME_TO_TICKS(Vars::Aimbot::Projectile::MaxSimulationTime.Value);
int iSplash = Vars::Aimbot::Projectile::SplashPrediction.Value && m_tInfo.m_flRadius ? Vars::Aimbot::Projectile::SplashPrediction.Value : Vars::Aimbot::Projectile::SplashPredictionEnum::Off;
int iMulti = Vars::Aimbot::Projectile::SplashMode.Value;
int iPoints = !m_tInfo.m_flGravity ? Vars::Aimbot::Projectile::SplashPointsDirect.Value : Vars::Aimbot::Projectile::SplashPointsArc.Value;
auto mDirectPoints = iSplash == Vars::Aimbot::Projectile::SplashPredictionEnum::Only ? std::unordered_map<int, Vec3>() : GetDirectPoints(tTarget, pProjectile);
auto vSpherePoints = !iSplash ? std::vector<std::pair<Vec3, int>>() : ComputeSphere(m_tInfo.m_flRadius + flSize, Vars::Aimbot::Projectile::SplashPoints.Value);
auto vSpherePoints = !iSplash ? std::vector<std::pair<Vec3, int>>() : ComputeSphere(m_tInfo.m_flRadius + flSize, iPoints);
Vec3 vAngleTo, vPredicted, vTarget;
int iLowestPriority = std::numeric_limits<int>::max(); float flLowestDist = std::numeric_limits<float>::max();
@@ -84,12 +84,8 @@ static inline bool CheckEntities(CTFPlayer* pLocal, CTFWeaponBase* pWeapon, CUse
if (F::AimbotGlobal.ShouldIgnore(pEntity, pLocal, pWeapon))
continue;
if (Vars::Aimbot::Projectile::AutoDetonate.Value & Vars::Aimbot::Projectile::AutoDetonateEnum::IgnoreInvisible && pEntity->IsPlayer())
{
auto pPlayer = pEntity->As<CTFPlayer>();
if (pPlayer->m_flInvisibility() && pPlayer->m_flInvisibility() >= Vars::Aimbot::General::IgnoreInvisible.Value / 100.f)
continue;
}
if (Vars::Aimbot::Projectile::AutoDetonate.Value & Vars::Aimbot::Projectile::AutoDetonateEnum::IgnoreInvisible && pEntity->IsPlayer() && pEntity->As<CTFPlayer>()->IsInvisible(Vars::Aimbot::General::IgnoreInvisible.Value / 100.f))
continue;
if (!SDK::VisPosCollideable(pProjectile, pEntity, vOrigin, pEntity->IsPlayer() ? pEntity->GetAbsOrigin() + pEntity->As<CTFPlayer>()->GetViewOffset() : pEntity->GetCenter(), MASK_SHOT))
continue;
+12 -9
View File
@@ -171,15 +171,13 @@ void CMenu::MenuAimbot(int iTab)
} EndSection();
if (Vars::Debug::Options.Value)
{
if (Section("##Debug Aimbot"))
if (Section("##Debug Aimbot", -8))
{
FSlider(Vars::Aimbot::General::HitscanPeek);
FToggle(Vars::Aimbot::General::PeekDTOnly, FToggleEnum::Left, &Hovered); FTooltip("This should probably stay on if you want to be able to target hitboxes other than the highest priority one", Hovered);
FDropdown(Vars::Aimbot::General::AimHoldsFire);
FSlider(Vars::Aimbot::General::NoSpreadOffset);
FSlider(Vars::Aimbot::General::NoSpreadAverage);
FSlider(Vars::Aimbot::General::NoSpreadInterval);
FSlider(Vars::Aimbot::General::NoSpreadBackupInterval);
FDropdown(Vars::Aimbot::General::AimHoldsFire);
} EndSection();
}
if (Section("Backtrack", 8))
@@ -234,8 +232,10 @@ void CMenu::MenuAimbot(int iTab)
} EndSection();
if (Vars::Debug::Options.Value)
{
if (Section("##Debug Hitscan"))
if (Section("##Debug Hitscan", -8))
{
FDropdown(Vars::Aimbot::Hitscan::PeekCheck, FDropdownEnum::None, 0, &Hovered); FTooltip("This should stay as doubletap only or off if you want to be able to target hitboxes other than the highest priority one", Hovered);
FSlider(Vars::Aimbot::Hitscan::PeekAmount);
FSlider(Vars::Aimbot::Hitscan::BoneSizeSubtract);
FSlider(Vars::Aimbot::Hitscan::BoneSizeMinimumScale);
} EndSection();
@@ -300,16 +300,19 @@ void CMenu::MenuAimbot(int iTab)
FToggle(Vars::Aimbot::Projectile::HuntsmanPullPoint, FToggleEnum::Right);
SetCursorPosY(GetCursorPosY() + 8);
FSlider(Vars::Aimbot::Projectile::SplashPoints, FSliderEnum::Left);
FToggle(Vars::Aimbot::Projectile::SplashGrates, FToggleEnum::Right);
FSlider(Vars::Aimbot::Projectile::SplashRotateX, FSliderEnum::Left, Vars::Aimbot::Projectile::SplashRotateX[DEFAULT_BIND] < 0.f ? "random" : "%g");
FSlider(Vars::Aimbot::Projectile::SplashRotateY, FSliderEnum::Right, Vars::Aimbot::Projectile::SplashRotateY[DEFAULT_BIND] < 0.f ? "random" : "%g");
FSlider(Vars::Aimbot::Projectile::SplashPointsDirect, FSliderEnum::Left);
FSlider(Vars::Aimbot::Projectile::SplashPointsArc, FSliderEnum::Right);
FSlider(Vars::Aimbot::Projectile::SplashCountDirect, FSliderEnum::Left);
FSlider(Vars::Aimbot::Projectile::SplashCountArc, FSliderEnum::Right);
FSlider(Vars::Aimbot::Projectile::SplashRotateX, FSliderEnum::Left, Vars::Aimbot::Projectile::SplashRotateX[DEFAULT_BIND] < 0.f ? "random" : "%g");
FSlider(Vars::Aimbot::Projectile::SplashRotateY, FSliderEnum::Right, Vars::Aimbot::Projectile::SplashRotateY[DEFAULT_BIND] < 0.f ? "random" : "%g");
FSlider(Vars::Aimbot::Projectile::SplashTraceInterval, FSliderEnum::Left);
FSlider(Vars::Aimbot::Projectile::SplashNormalSkip, FSliderEnum::Right);
FDropdown(Vars::Aimbot::Projectile::SplashMode, FDropdownEnum::Left);
FDropdown(Vars::Aimbot::Projectile::RocketSplashMode, FDropdownEnum::Right, 0, &Hovered); FTooltip("Special splash type for rockets, more expensive", Hovered);
FToggle(Vars::Aimbot::Projectile::SplashGrates);
SetCursorPosY(GetCursorPosY() + 8);
FSlider(Vars::Aimbot::Projectile::DeltaCount, FSliderEnum::Left);
FDropdown(Vars::Aimbot::Projectile::DeltaMode, FDropdownEnum::Right);
FDropdown(Vars::Aimbot::Projectile::MovesimFrictionFlags);
+3 -3
View File
@@ -315,8 +315,8 @@ static inline void StorePlayer(CTFPlayer* pPlayer, CTFPlayer* pLocal, Group_t* p
else if (pPlayer->InCond(TF_COND_FEIGN_DEATH))
tCache.m_vText.emplace_back(ALIGN_TOPRIGHT, "Feign", Vars::Menu::Theme::Active.Value, Vars::Menu::Theme::Background.Value);
if (pPlayer->m_flInvisibility())
tCache.m_vText.emplace_back(ALIGN_TOPRIGHT, std::format("Invis {:.0f}%", pPlayer->m_flInvisibility() * 100), Vars::Menu::Theme::Active.Value, Vars::Menu::Theme::Background.Value);
if (float flInvis = pPlayer->GetEffectiveInvisibilityLevel())
tCache.m_vText.emplace_back(ALIGN_TOPRIGHT, std::format("Invis {:.0f}%", flInvis * 100), Vars::Menu::Theme::Active.Value, Vars::Menu::Theme::Background.Value);
if (pPlayer->InCond(TF_COND_DISGUISED))
tCache.m_vText.emplace_back(ALIGN_TOPRIGHT, "Disguise", Vars::Menu::Theme::Active.Value, Vars::Menu::Theme::Background.Value);
@@ -1003,7 +1003,7 @@ bool CESP::GetDrawBounds(CBaseEntity* pEntity, float& x, float& y, float& w, flo
Math::AngleMatrix({ 0.f, I::EngineClient->GetViewAngles().y, 0.f }, mTransform, false);
float flLeft, flRight, flTop, flBottom;
if (!SDK::IsOnScreen(pEntity, mTransform, &flLeft, &flRight, &flTop, &flBottom))
if (!SDK::IsOnScreen(pEntity, mTransform, &flLeft, &flRight, &flTop, &flBottom, true))
return false;
x = flLeft;
@@ -101,7 +101,7 @@ bool CTFPlayer::IsTaunting()
return InCond(TF_COND_TAUNTING);
};
bool CTFPlayer::IsInvisible()
bool CTFPlayer::IsInvisible(float flValue)
{
if (InCond(TF_COND_BURNING)
|| InCond(TF_COND_BURNING_PYRO)
@@ -109,7 +109,8 @@ bool CTFPlayer::IsInvisible()
|| InCond(TF_COND_URINE))
return false;
return m_flInvisibility() >= 1.f;
float flInvis = GetEffectiveInvisibilityLevel();
return flInvis && flInvis >= 1.f;
}
bool CTFPlayer::IsInvulnerable()
+3 -1
View File
@@ -5,6 +5,7 @@
MAKE_SIGNATURE(CTFPlayer_IsPlayerOnSteamFriendsList, "client.dll", "40 57 48 81 EC ? ? ? ? 48 8B FA E8", 0x0);
MAKE_SIGNATURE(TeamFortress_CalculateMaxSpeed, "client.dll", "88 54 24 ? 53 55", 0x0);
MAKE_SIGNATURE(CTFPlayer_UpdateClientSideAnimation, "client.dll", "48 89 5C 24 ? 57 48 83 EC ? 48 8B D9 E8 ? ? ? ? 48 8B F8 48 85 C0 74 ? 48 8B 00 48 8B CF FF 90 ? ? ? ? 84 C0 75 ? 33 FF 48 3B DF", 0x0);
MAKE_SIGNATURE(CTFPlayer_GetEffectiveInvisibilityLevel, "client.dll", "40 57 48 83 EC ? 0F 29 7C 24", 0x0);
MAKE_SIGNATURE(CTFPlayer_UpdateWearables, "client.dll", "40 53 48 83 EC ? 48 8B D9 E8 ? ? ? ? 48 8B 03 48 8B CB FF 90 ? ? ? ? 4C 8D 0D ? ? ? ? C7 44 24 ? ? ? ? ? 48 8B C8 4C 8D 05 ? ? ? ? 33 D2 E8 ? ? ? ? 48 85 C0", 0x0);
class CTFPlayer : public CBasePlayer
@@ -201,6 +202,7 @@ public:
SIGNATURE_ARGS(CalculateMaxSpeed, float, TeamFortress, (bool bIgnoreSpecialAbility = false), this, bIgnoreSpecialAbility);
SIGNATURE(IsPlayerOnSteamFriendsList, bool, CTFPlayer, this, this);
SIGNATURE(UpdateClientSideAnimation, void, CTFPlayer, this);
SIGNATURE(GetEffectiveInvisibilityLevel, float, CTFPlayer, this);
SIGNATURE(UpdateWearables, void, CTFPlayer, this);
Vec3 GetEyeAngles();
@@ -210,7 +212,7 @@ public:
void RemoveCond(ETFCond eCond); // bits only
bool IsAGhost();
bool IsTaunting();
bool IsInvisible();
bool IsInvisible(float flValue = 1.f);
bool IsInvulnerable();
bool IsUbered();
bool IsCritBoosted();
+14 -6
View File
@@ -216,14 +216,14 @@ bool SDK::W2S(const Vec3& vOrigin, Vec3& vScreen, bool bAlways)
return bOnScreen;
}
bool SDK::IsOnScreen(CBaseEntity* pEntity, const matrix3x4& mTransform, float* pLeft, float* pRight, float* pTop, float* pBottom)
bool SDK::IsOnScreen(CBaseEntity* pEntity, const matrix3x4& mTransform, float* pLeft, float* pRight, float* pTop, float* pBottom, bool bAll)
{
Vec3 vMins = pEntity->m_vecMins(), vMaxs = pEntity->m_vecMaxs();
bool bInit = false;
float flLeft = 0.f, flRight = 0.f, flTop = 0.f, flBottom = 0.f;
const Vec3 vPoints[] = {
static Vec3 vPoints[] = {
Vec3(0.f, 0.f, vMins.z),
Vec3(0.f, 0.f, vMaxs.z),
Vec3(vMins.x, vMins.y, (vMins.z + vMaxs.z) * 0.5f),
@@ -237,7 +237,11 @@ bool SDK::IsOnScreen(CBaseEntity* pEntity, const matrix3x4& mTransform, float* p
Vec3 vScreenPos;
if (!W2S(vPoint, vScreenPos))
continue;
{
if (!bAll)
continue;
return false;
}
flLeft = bInit ? std::min(flLeft, vScreenPos.x) : vScreenPos.x;
flRight = bInit ? std::max(flRight, vScreenPos.x) : vScreenPos.x;
@@ -257,14 +261,14 @@ bool SDK::IsOnScreen(CBaseEntity* pEntity, const matrix3x4& mTransform, float* p
return !(flRight < 0 || flLeft > H::Draw.m_nScreenW || flTop < 0 || flBottom > H::Draw.m_nScreenH);
}
bool SDK::IsOnScreen(CBaseEntity* pEntity, Vec3 vOrigin)
bool SDK::IsOnScreen(CBaseEntity* pEntity, Vec3 vOrigin, bool bAll)
{
Vec3 vMins = pEntity->m_vecMins(), vMaxs = pEntity->m_vecMaxs();
bool bInit = false;
float flLeft = 0.f, flRight = 0.f, flTop = 0.f, flBottom = 0.f;
const Vec3 vPoints[] = {
static Vec3 vPoints[] = {
Vec3(0.f, 0.f, vMins.z),
Vec3(0.f, 0.f, vMaxs.z),
Vec3(vMins.x, vMins.y, (vMins.z + vMaxs.z) * 0.5f),
@@ -278,7 +282,11 @@ bool SDK::IsOnScreen(CBaseEntity* pEntity, Vec3 vOrigin)
Vec3 vScreenPos;
if (!W2S(vPoint, vScreenPos))
continue;
{
if (!bAll)
continue;
return false;
}
flLeft = bInit ? std::min(flLeft, vScreenPos.x) : vScreenPos.x;
flRight = bInit ? std::max(flRight, vScreenPos.x) : vScreenPos.x;
+2 -2
View File
@@ -96,8 +96,8 @@ namespace SDK
float RandomFloat(float flMinVal = 0.f, float flMaxVal = 1.f);
bool W2S(const Vec3& vOrigin, Vec3& vScreen, bool bAlways = false);
bool IsOnScreen(CBaseEntity* pEntity, const matrix3x4& mTransform, float* pLeft = nullptr, float* pRight = nullptr, float* pTop = nullptr, float* pBottom = nullptr);
bool IsOnScreen(CBaseEntity* pEntity, Vec3 vOrigin);
bool IsOnScreen(CBaseEntity* pEntity, const matrix3x4& mTransform, float* pLeft = nullptr, float* pRight = nullptr, float* pTop = nullptr, float* pBottom = nullptr, bool bAll = false);
bool IsOnScreen(CBaseEntity* pEntity, Vec3 vOrigin, bool bAll = false);
bool IsOnScreen(CBaseEntity* pEntity, bool bShouldGetOwner = true);
void Trace(const Vec3& vecStart, const Vec3& vecEnd, unsigned int nMask, ITraceFilter* pFilter, CGameTrace* pTrace);
+14 -9
View File
@@ -277,15 +277,13 @@ namespace Vars
CVar(FOVCircle, "FOV Circle", true, VISUAL);
CVar(NoSpread, "No spread", false);
CVar(HitscanPeek, "Hitscan peek", 1, NOSAVE | DEBUGVAR, 0, 5);
CVar(PeekDTOnly, "Peek DT only", true, NOSAVE | DEBUGVAR);
CVarEnum(AimHoldsFire, "Aim holds fire", 2, NOSAVE | DEBUGVAR, nullptr,
VA_LIST("False", "Minigun only", "Always"),
False, MinigunOnly, Always);
CVar(NoSpreadOffset, "No spread offset", 0.f, NOSAVE | DEBUGVAR | SLIDER_PRECISION, -1.f, 1.f, 0.1f);
CVar(NoSpreadAverage, "No spread average", 5, NOSAVE | DEBUGVAR | SLIDER_MIN, 1, 25);
CVar(NoSpreadInterval, "No spread interval", 0.1f, NOSAVE | DEBUGVAR | SLIDER_MIN, 0.05f, 5.f, 0.1f, "%gs");
CVar(NoSpreadBackupInterval, "No spread backup interval", 2.f, NOSAVE | DEBUGVAR | SLIDER_MIN, 2.f, 10.f, 0.1f, "%gs");
CVarEnum(AimHoldsFire, "Aim holds fire", 2, NOSAVE | DEBUGVAR, nullptr,
VA_LIST("False", "Minigun only", "Always"),
False, MinigunOnly, Always);
SUBNAMESPACE_END(Global);
SUBNAMESPACE_BEGIN(Hitscan)
@@ -300,6 +298,10 @@ namespace Vars
CVar(MultipointScale, "Multipoint scale", 0.f, SLIDER_CLAMP | SLIDER_PRECISION, 0.f, 100.f, 5.f, "%g%%");
CVar(TapfireDistance, "Tapfire distance", 1000.f, SLIDER_MIN | SLIDER_PRECISION, 250.f, 1000.f, 50.f);
CVarEnum(PeekCheck, "Peek check", 1, NOSAVE | DEBUGVAR, nullptr,
VA_LIST("Off", "Doubletap only", "Always"),
Off, DoubletapOnly, Always);
CVar(PeekAmount, "Peek amount", 1, NOSAVE | DEBUGVAR, 0, 5);
CVar(BoneSizeSubtract, "Bone size subtract", 1.f, NOSAVE | DEBUGVAR | SLIDER_MIN, 0.f, 4.f, 0.25f);
CVar(BoneSizeMinimumScale, "Bone size minimum scale", 1.f, NOSAVE | DEBUGVAR | SLIDER_CLAMP, 0.f, 1.f, 0.1f);
SUBNAMESPACE_END(HITSCAN);
@@ -357,12 +359,13 @@ namespace Vars
CVar(HuntsmanAddLow, "Huntsman add low", 0.f, NOSAVE | DEBUGVAR | SLIDER_CLAMP | SLIDER_PRECISION, 0.f, 20.f);
CVar(HuntsmanClamp, "Huntsman clamp", 5.f, NOSAVE | DEBUGVAR | SLIDER_CLAMP | SLIDER_PRECISION, 0.f, 10.f, 0.5f);
CVar(HuntsmanPullPoint, "Huntsman pull point", false, NOSAVE | DEBUGVAR);
CVar(SplashPoints, "Splash points", 100, NOSAVE | DEBUGVAR | SLIDER_MIN, 1, 400, 5);
CVar(SplashGrates, "Splash grates", true, NOSAVE | DEBUGVAR);
CVar(SplashRotateX, "Splash Rx", -1.f, NOSAVE | DEBUGVAR | SLIDER_MIN | SLIDER_PRECISION, -1.f, 360.f);
CVar(SplashRotateY, "Splash Ry", -1.f, NOSAVE | DEBUGVAR | SLIDER_MIN | SLIDER_PRECISION, -1.f, 360.f);
CVar(SplashPointsDirect, "Direct splash points", 100, NOSAVE | DEBUGVAR | SLIDER_MIN, 1, 400, 5);
CVar(SplashPointsArc, "Arc splash points", 100, NOSAVE | DEBUGVAR | SLIDER_MIN, 1, 400, 5);
CVar(SplashCountDirect, "Direct splash count", 100, NOSAVE | DEBUGVAR | SLIDER_MIN, 1, 100);
CVar(SplashCountArc, "Arc splash count", 5, NOSAVE | DEBUGVAR | SLIDER_MIN, 1, 100);
CVar(SplashRotateX, "Splash Rx", -1.f, NOSAVE | DEBUGVAR | SLIDER_MIN | SLIDER_PRECISION, -1.f, 360.f);
CVar(SplashRotateY, "Splash Ry", -1.f, NOSAVE | DEBUGVAR | SLIDER_MIN | SLIDER_PRECISION, -1.f, 360.f);
CVar(SplashTraceInterval, "Splash trace interval", 10, NOSAVE | DEBUGVAR, 1, 10);
CVar(SplashNormalSkip, "Splash normal skip", 1, NOSAVE | DEBUGVAR | SLIDER_MIN, 1, 10);
CVarEnum(SplashMode, "Splash mode", 0, NOSAVE | DEBUGVAR, nullptr,
@@ -371,6 +374,8 @@ namespace Vars
CVarEnum(RocketSplashMode, "Rocket splash mode", 0, NOSAVE | DEBUGVAR, nullptr,
VA_LIST("Regular", "Special light", "Special heavy"),
Regular, SpecialLight, SpecialHeavy);
CVar(SplashGrates, "Splash grates", true, NOSAVE | DEBUGVAR);
CVar(DeltaCount, "Delta count", 5, NOSAVE | DEBUGVAR, 1, 5);
CVarEnum(DeltaMode, "Delta mode", 0, NOSAVE | DEBUGVAR, nullptr,
VA_LIST("Average", "Max"),