diff --git a/include/PlayerTools.hpp b/include/PlayerTools.hpp index 8398991e..60cacb8c 100644 --- a/include/PlayerTools.hpp +++ b/include/PlayerTools.hpp @@ -15,14 +15,6 @@ class CachedEntity; namespace player_tools { -enum class IgnoreReason -{ - DO_NOT_IGNORE, - IS_HOOVY, - IS_TAUNTING, - LOCAL_PLAYER_LIST, - OTHER -}; bool shouldTargetSteamId(unsigned id); bool shouldTarget(CachedEntity *player); diff --git a/include/helpers.hpp b/include/helpers.hpp index f3e89abb..19fae343 100644 --- a/include/helpers.hpp +++ b/include/helpers.hpp @@ -73,6 +73,7 @@ bool IsPlayerInvulnerable(CachedEntity *player); bool IsPlayerCritBoosted(CachedEntity *player); bool IsPlayerInvisible(CachedEntity *player); bool IsPlayerDisguised(CachedEntity *player); +bool IsPlayerResistantToCurrentWeapon(CachedEntity *player); const char *GetBuildingName(CachedEntity *ent); Vector GetBuildingPosition(CachedEntity *ent); diff --git a/src/PlayerTools.cpp b/src/PlayerTools.cpp index e4987479..38bc9842 100644 --- a/src/PlayerTools.cpp +++ b/src/PlayerTools.cpp @@ -38,6 +38,7 @@ bool shouldTargetSteamId(unsigned id) return false; return true; } + bool shouldTarget(CachedEntity *entity) { if (entity->m_Type() == ENTITY_PLAYER) @@ -53,7 +54,6 @@ bool shouldTarget(CachedEntity *entity) return true; } - bool shouldAlwaysRenderEspSteamId(unsigned id) { if (id == 0) diff --git a/src/hacks/Aimbot.cpp b/src/hacks/Aimbot.cpp index 9536a8c8..aea03000 100644 --- a/src/hacks/Aimbot.cpp +++ b/src/hacks/Aimbot.cpp @@ -628,9 +628,8 @@ bool IsTargetStateGood(CachedEntity *entity) } } // Vaccinator - if (g_pLocalPlayer->weapon_mode == weaponmode::weapon_hitscan || LOCAL_W->m_iClassID() == CL_CLASS(CTFCompoundBow)) - if (ignore_vaccinator && HasCondition(entity)) - return false; + if (ignore_vaccinator && IsPlayerResistantToCurrentWeapon(entity)) + return false; } // Preform hitbox prediction diff --git a/src/hacks/ESP.cpp b/src/hacks/ESP.cpp index 0900153c..781100f0 100644 --- a/src/hacks/ESP.cpp +++ b/src/hacks/ESP.cpp @@ -1209,11 +1209,27 @@ void _FASTCALL ProcessEntity(CachedEntity *ent) // Vaccinator if (HasCondition(ent)) { - AddEntityString(ent, "*VACCINATOR*"); + AddEntityString(ent, "*BULLET VACCINATOR*", colors::FromRGBA8(220, 220, 220, 255)); } else if (HasCondition(ent)) { - AddEntityString(ent, "*PASSIVE RESIST*"); + AddEntityString(ent, "*BULLET PASSIVE*"); + } + if (HasCondition(ent)) + { + AddEntityString(ent, "*FIRE VACCINATOR*", colors::FromRGBA8(220, 220, 220, 255)); + } + else if (HasCondition(ent)) + { + AddEntityString(ent, "*FIRE PASSIVE*"); + } + if (HasCondition(ent)) + { + AddEntityString(ent, "*BLAST VACCINATOR*", colors::FromRGBA8(220, 220, 220, 255)); + } + else if (HasCondition(ent)) + { + AddEntityString(ent, "*BLAST PASSIVE*"); } // Crit if (IsPlayerCritBoosted(ent)) diff --git a/src/hacks/Trigger.cpp b/src/hacks/Trigger.cpp index 0700b772..d15b3509 100644 --- a/src/hacks/Trigger.cpp +++ b/src/hacks/Trigger.cpp @@ -269,9 +269,8 @@ bool IsTargetStateGood(CachedEntity *entity, bool backtrack) if (ignore_cloak && IsPlayerInvisible(entity)) return false; // If settings allow, dont target vaccinated players - if (g_pLocalPlayer->weapon_mode == weaponmode::weapon_hitscan || LOCAL_W->m_iClassID() == CL_CLASS(CTFCompoundBow)) - if (ignore_vaccinator && HasCondition(entity)) - return false; + if (ignore_vaccinator && IsPlayerResistantToCurrentWeapon(entity)) + return false; } // Head hitbox detection diff --git a/src/helpers.cpp b/src/helpers.cpp index eeea6f7a..0218d23c 100644 --- a/src/helpers.cpp +++ b/src/helpers.cpp @@ -1344,6 +1344,44 @@ bool IsPlayerDisguised(CachedEntity *player) return HasConditionMask(player); } +bool IsPlayerResistantToCurrentWeapon(CachedEntity *player) +{ + switch (LOCAL_W->m_iClassID()) + { + case CL_CLASS(CTFRocketLauncher_DirectHit): + case CL_CLASS(CTFRocketLauncher_AirStrike): + case CL_CLASS(CTFRocketLauncher_Mortar): // doesn't exist yet + case CL_CLASS(CTFRocketLauncher): + case CL_CLASS(CTFParticleCannon): + case CL_CLASS(CTFGrenadeLauncher): + case CL_CLASS(CTFPipebombLauncher): + if (HasCondition(player)) + return true; + break; + case CL_CLASS(CTFCompoundBow): + case CL_CLASS(CTFSyringeGun): + case CL_CLASS(CTFCrossbow): + case CL_CLASS(CTFShotgunBuildingRescue): + case CL_CLASS(CTFDRGPomson): + case CL_CLASS(CTFRaygun): + if (HasCondition(player)) + return true; + break; + case CL_CLASS(CTFWeaponFlameBall): + case CL_CLASS(CTFFlareGun): + case CL_CLASS(CTFFlareGun_Revenge): + case CL_CLASS(CTFFlameRocket): + case CL_CLASS(CTFFlameThrower): + if (HasCondition(player)) + return true; + break; + default: + if (g_pLocalPlayer->weapon_mode == weaponmode::weapon_hitscan && HasCondition(player)) + return true; + } + return false; +} + // F1 c&p Vector CalcAngle(Vector src, Vector dst) {