Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions src/game/server/neo/bot/behavior/neo_bot_behavior.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -827,7 +827,7 @@ void CNEOBotMainAction::FireWeaponAtEnemy( CNEOBot *me )
if (myWeapon && (myWeapon->GetNeoWepBits() & (NEO_WEP_MILSO | NEO_WEP_TACHI | NEO_WEP_KYLA | NEO_WEP_KNIFE | NEO_WEP_THROWABLE)))
{
auto *primaryWeapon = static_cast<CNEOBaseCombatWeapon *>(me->Weapon_GetSlot(0));
if (primaryWeapon && (primaryWeapon->GetNeoWepBits() & (NEO_WEP_AA13 | NEO_WEP_SUPA7)))
if (primaryWeapon && (primaryWeapon->GetNeoWepBits() & NEO_WEP_SHOTGUN))
{
const bool bClearForShotgun = me->IsLineOfFireClear(vShootablePos, CNEOBot::LINE_OF_FIRE_FLAGS_SHOTGUN);
if (bClearForShotgun)
Expand All @@ -839,7 +839,7 @@ void CNEOBotMainAction::FireWeaponAtEnemy( CNEOBot *me )
bShotgunSituationHandled = true;
}
}
else if (myWeapon && (myWeapon->GetNeoWepBits() & (NEO_WEP_AA13 | NEO_WEP_SUPA7)))
else if (myWeapon && (myWeapon->GetNeoWepBits() & NEO_WEP_SHOTGUN))
{
const bool bClearForShotgun = me->IsLineOfFireClear(vShootablePos, CNEOBot::LINE_OF_FIRE_FLAGS_SHOTGUN);
if (!bClearForShotgun)
Expand All @@ -849,7 +849,7 @@ void CNEOBotMainAction::FireWeaponAtEnemy( CNEOBot *me )
me->EquipBestWeaponForThreat(threat, bNotPrimary);
myWeapon = static_cast<CNEOBaseCombatWeapon *>(me->GetActiveWeapon());
// If it's still Supa7, then it should try to dodge the threat instead
if (myWeapon && (myWeapon->GetNeoWepBits() & (NEO_WEP_AA13 | NEO_WEP_SUPA7)))
if (myWeapon && (myWeapon->GetNeoWepBits() & NEO_WEP_SHOTGUN))
{
return;
}
Expand Down
12 changes: 6 additions & 6 deletions src/game/server/neo/bot/neo_bot.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1331,7 +1331,7 @@ float CNEOBot::GetThreatDanger(CBaseCombatCharacter* who) const

#if 1
CNEOBaseCombatWeapon *whoWeapon = static_cast<CNEOBaseCombatWeapon *>(player->GetActiveWeapon());
if (whoWeapon && (whoWeapon->GetNeoWepBits() & (NEO_WEP_AA13 | NEO_WEP_SUPA7))) // NEO TODO (Adam) NEO_WEP_SHOTGUN
if (whoWeapon && (whoWeapon->GetNeoWepBits() & NEO_WEP_SHOTGUN))
{
// Shotgunners are scary at close range
if (IsRangeLessThan(player, neo_bot_shotgunner_range.GetFloat()))
Expand Down Expand Up @@ -1405,12 +1405,12 @@ float CNEOBot::GetDesiredAttackRange(void) const
return 32.0f;
}

if (myWeapon->GetNeoWepBits() & (NEO_WEP_AA13 | NEO_WEP_SUPA7))
if (myWeapon->GetNeoWepBits() & NEO_WEP_SHOTGUN)
{
return 100.0f;
}

if (myWeapon->GetNeoWepBits() & (NEO_WEP_JITTE | NEO_WEP_JITTE_S | NEO_WEP_KYLA | NEO_WEP_MILSO | NEO_WEP_MPN | NEO_WEP_MPN_S | NEO_WEP_SRM | NEO_WEP_SRM_S | NEO_WEP_TACHI))
if (myWeapon->GetNeoWepBits() & (NEO_WEP_PISTOL | NEO_WEP_SMG))
{
return 250.0f;
}
Expand Down Expand Up @@ -1556,7 +1556,7 @@ void CNEOBot::EquipBestWeaponForThreat(const CKnownEntity* threat, const bool bN
// passthrough
}
else if (secondaryWeapon
&& primaryWeapon->GetNeoWepBits() & (NEO_WEP_AA13 | NEO_WEP_SUPA7)
&& primaryWeapon->GetNeoWepBits() & NEO_WEP_SHOTGUN
&& IsRangeGreaterThan(threat->GetLastKnownPosition(), 1000.0f))
{
// passthrough
Expand Down Expand Up @@ -2209,7 +2209,7 @@ bool CNEOBot::FindSplashTarget(CBaseEntity* target, float maxSplashRadius, Vecto
NextBotTraceFilterIgnoreActors filter(NULL, COLLISION_GROUP_NONE);

auto *myWeapon = static_cast<const CNEOBaseCombatWeapon *>(GetActiveWeapon());
const bool bIsShotgun = (myWeapon && (myWeapon->GetNeoWepBits() & (NEO_WEP_AA13 | NEO_WEP_SUPA7)));
const bool bIsShotgun = (myWeapon && (myWeapon->GetNeoWepBits() & NEO_WEP_SHOTGUN));
const LineOfFireFlags flags = bIsShotgun ? LINE_OF_FIRE_FLAGS_SHOTGUN : LINE_OF_FIRE_FLAGS_DEFAULT;
UTIL_TraceLine(target->WorldSpaceCenter(), probe, LineOfFireMask(flags), &filter, &trace);
if (trace.DidHitWorld())
Expand Down Expand Up @@ -2630,7 +2630,7 @@ CNEOBaseCombatWeapon* CNEOBot::GetBludgeonWeapon(void)
if (!pWeapon)
return false;

return (pWeapon->IsMeleeWeapon() || pWeapon->GetNeoWepBits() & (NEO_WEP_AA13 | NEO_WEP_SUPA7));
return (pWeapon->IsMeleeWeapon() || pWeapon->GetNeoWepBits() & NEO_WEP_SHOTGUN);
}

/*static*/ bool CNEOBot::IsBludgeon(CNEOBaseCombatWeapon* pWeapon)
Expand Down
11 changes: 3 additions & 8 deletions src/game/server/neo/bot/neo_bot_path_cost.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -151,24 +151,19 @@ float CNEOBotPathCost::operator()(CNavArea* baseArea, CNavArea* fromArea, const
const int visibleAreaCount = area->GetPotentiallyVisibleAreaCount();
if (visibleAreaCount > 0)
{
constexpr int nShotgunBits = NEO_WEP_AA13 | NEO_WEP_SUPA7;
constexpr int nBattleRifleBits = NEO_WEP_M41 | NEO_WEP_M41_S;
constexpr int nPistolCaliberBits = NEO_WEP_MILSO | NEO_WEP_TACHI | NEO_WEP_KYLA
| NEO_WEP_MPN | NEO_WEP_MPN_S | NEO_WEP_JITTE | NEO_WEP_JITTE_S | NEO_WEP_SRM | NEO_WEP_SRM_S;

if (nWeaponBits & nPistolCaliberBits)
if (nWeaponBits & (NEO_WEP_PISTOL | NEO_WEP_SMG))
{
// Weapons that don't have max first shot accuracy
const float exposurePenalty = neo_bot_path_penalty_exposure_pistol.GetFloat();
cost += visibleAreaCount * exposurePenalty;
}
else if (nWeaponBits & nShotgunBits)
else if (nWeaponBits & NEO_WEP_SHOTGUN)
{
// Weapons that have spread that can't hit long range targets
const float exposurePenalty = neo_bot_path_penalty_exposure_shotgun.GetFloat();
cost += visibleAreaCount * exposurePenalty;
}
else if (nWeaponBits & nBattleRifleBits)
else if (nWeaponBits & NEO_WEP_BATTLERIFLE)
{
// Weapons that benefit from medium sightlines that can see many NavAreas
const float baseline_penalty = neo_bot_path_penalty_exposure_inverse_base_battle_rifle.GetFloat();
Expand Down
2 changes: 1 addition & 1 deletion src/game/shared/basecombatweapon_shared.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2935,7 +2935,7 @@ void RecvProxy_m_iClip(const CRecvProxyData* pData, void* pStruct, void* pOut)
return;
}

const float bulletHeatCost = pNeoWeapon->GetNeoWepBits() & (NEO_WEP_SUPA7 | NEO_WEP_AA13) ? 0.5f : 0.1f; // NEO TODO (Adam) store this in weapon info text file?
const float bulletHeatCost = pNeoWeapon->GetNeoWepBits() & NEO_WEP_SHOTGUN ? 0.5f : 0.1f; // NEO TODO (Adam) store this in weapon info text file?
pNeoWeapon->m_flTemperature = Min(THERMALS_OBJECT_MAX_TEMPERATURE , pNeoWeapon->m_flTemperature + (bulletsFired * bulletHeatCost));
}
#endif //CLIENT_DLL
Expand Down
2 changes: 1 addition & 1 deletion src/game/shared/neo/neo_shot_manipulator.h
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ extern ConVar sv_neo_recoil_viewfollow_scale;

inline const Vector &CNEOShotManipulator::ApplySpread(const Vector& vecSpread, float bias)
{
if (m_pWeapon && (m_pWeapon->GetNeoWepBits() & (NEO_WEP_AA13 | NEO_WEP_SUPA7)))
if (m_pWeapon && (m_pWeapon->GetNeoWepBits() & NEO_WEP_SHOTGUN))
return CShotManipulator::ApplySpread(vecSpread, bias);
m_vecShotDirection = ApplyRecoil(vecSpread, bias);
return CShotManipulator::ApplySpread(vecSpread, bias);
Expand Down
2 changes: 1 addition & 1 deletion src/game/shared/neo/weapons/weapon_aa13.h
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ class CWeaponAA13 : public CNEOBaseCombatWeapon
virtual void PrimaryAttack(void) OVERRIDE;

NEO_WEP_BITS_UNDERLYING_TYPE WeaponIndex() const override { return NEO_WIDX_AA13; }
virtual NEO_WEP_BITS_UNDERLYING_TYPE GetNeoWepBits(void) const OVERRIDE { return NEO_WEP_AA13 | NEO_WEP_FIREARM; }
virtual NEO_WEP_BITS_UNDERLYING_TYPE GetNeoWepBits(void) const OVERRIDE { return NEO_WEP_AA13 | NEO_WEP_SHOTGUN | NEO_WEP_FIREARM; }
virtual int GetNeoWepXPCost(const int neoClass) const OVERRIDE { return 20; }

virtual float GetSpeedScale(void) const OVERRIDE { return 0.725f; }
Expand Down
9 changes: 9 additions & 0 deletions src/game/shared/neo/weapons/weapon_bits.h
Original file line number Diff line number Diff line change
Expand Up @@ -36,13 +36,22 @@
X(SCOPEDWEAPON, scopedwep, "", WEP_TYPE_NIL) \
X(THROWABLE, throwable, "", WEP_TYPE_NIL) \
X(SUPPRESSED, suppressed, "", WEP_TYPE_NIL) \
X(PISTOL, pistol, "", WEP_TYPE_NIL) \
X(SMG, smg, "", WEP_TYPE_NIL) \
X(SHOTGUN, shotgun, "", WEP_TYPE_NIL) \
X(BATTLERIFLE, battlerifle, "", WEP_TYPE_NIL) \
X(FIREARM, firearm, "", WEP_TYPE_NIL) \
X(EXPLOSIVE, explosive, "", WEP_TYPE_NIL)

// SCOPEDWEAPON - Scoped weapons should OR this in their flags.
// THROWABLE - Generic for grenades
// SUPPRESSED - Suppressed weapons
// EXPLOSIVE - Generic for weapons that count as explosive kills on killfeed.
// SHOTGUN - Weapons with shotgun spread
// BATTLERIFLE - Semi-auto rifles

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe we should add ASSAULTRIFLE too while we're at it?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I thought about it, but I wanted to keep changes limited to gameplay significant changes.

Otherwise then it brings up philosophical questions of what bits should we set the BALC, PBK, and PZ to. Is it easier to classify them as Assault Rifles? Is the PBK an SMG? etc.

Alternatively maybe it makes more sense to brand things along the lines of SCOPEDWEAPON? e.g. instead of BATTLERIFLE, specify something instead like AUTOWEAPON vs. SEMIWEAPON, but I'm not sure about the wording of the latter.

// PISTOL - Sidearms without first shot accuracy
// SMG - Primary without first shot accuracy
// FIREARM - Generic for all guns

#define NEO_WEP_BITS_UNDERLYING_TYPE long long int

Expand Down
2 changes: 1 addition & 1 deletion src/game/shared/neo/weapons/weapon_jitte.h
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ class CWeaponJitte : public CNEOBaseCombatWeapon
CWeaponJitte();

NEO_WEP_BITS_UNDERLYING_TYPE WeaponIndex() const override { return NEO_WIDX_JITTE; }
virtual NEO_WEP_BITS_UNDERLYING_TYPE GetNeoWepBits(void) const OVERRIDE { return NEO_WEP_JITTE | NEO_WEP_FIREARM; }
virtual NEO_WEP_BITS_UNDERLYING_TYPE GetNeoWepBits(void) const OVERRIDE { return NEO_WEP_JITTE | NEO_WEP_SMG | NEO_WEP_FIREARM; }
virtual int GetNeoWepXPCost(const int neoClass) const OVERRIDE { return 0; }

virtual float GetSpeedScale(void) const OVERRIDE { return 0.8f; }
Expand Down
2 changes: 1 addition & 1 deletion src/game/shared/neo/weapons/weapon_jittes.h
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ class CWeaponJitteS : public CNEOBaseCombatWeapon
CWeaponJitteS();

NEO_WEP_BITS_UNDERLYING_TYPE WeaponIndex() const override { return NEO_WIDX_JITTE_S; }
virtual NEO_WEP_BITS_UNDERLYING_TYPE GetNeoWepBits(void) const OVERRIDE { return NEO_WEP_JITTE | NEO_WEP_SUPPRESSED | NEO_WEP_FIREARM; }
virtual NEO_WEP_BITS_UNDERLYING_TYPE GetNeoWepBits(void) const OVERRIDE { return NEO_WEP_JITTE_S | NEO_WEP_SMG | NEO_WEP_SUPPRESSED | NEO_WEP_FIREARM; }
virtual int GetNeoWepXPCost(const int neoClass) const OVERRIDE { return 0; }

virtual float GetSpeedScale(void) const OVERRIDE { return 0.8f; }
Expand Down
2 changes: 1 addition & 1 deletion src/game/shared/neo/weapons/weapon_kyla.h
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ class CWeaponKyla : public CNEOBaseCombatWeapon
CWeaponKyla(void);

NEO_WEP_BITS_UNDERLYING_TYPE WeaponIndex() const override { return NEO_WIDX_KYLA; }
virtual NEO_WEP_BITS_UNDERLYING_TYPE GetNeoWepBits(void) const override { return NEO_WEP_KYLA | NEO_WEP_FIREARM; }
virtual NEO_WEP_BITS_UNDERLYING_TYPE GetNeoWepBits(void) const override { return NEO_WEP_KYLA | NEO_WEP_PISTOL | NEO_WEP_FIREARM; }
virtual int GetNeoWepXPCost(const int neoClass) const override { return 0; }

virtual float GetSpeedScale(void) const OVERRIDE { return 0.85f; }
Expand Down
2 changes: 1 addition & 1 deletion src/game/shared/neo/weapons/weapon_m41.h
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ class CWeaponM41 : public CNEOBaseCombatWeapon
CWeaponM41();

NEO_WEP_BITS_UNDERLYING_TYPE WeaponIndex() const override { return NEO_WIDX_M41; }
virtual NEO_WEP_BITS_UNDERLYING_TYPE GetNeoWepBits(void) const override { return NEO_WEP_M41 | NEO_WEP_FIREARM; }
virtual NEO_WEP_BITS_UNDERLYING_TYPE GetNeoWepBits(void) const override { return NEO_WEP_M41 | NEO_WEP_BATTLERIFLE | NEO_WEP_FIREARM; }
virtual int GetNeoWepXPCost(const int neoClass) const override { return 0; }

virtual float GetSpeedScale(void) const OVERRIDE { return 0.725f; }
Expand Down
2 changes: 1 addition & 1 deletion src/game/shared/neo/weapons/weapon_m41s.h
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ class CWeaponM41S : public CNEOBaseCombatWeapon
CWeaponM41S();

NEO_WEP_BITS_UNDERLYING_TYPE WeaponIndex() const override { return NEO_WIDX_M41_S; }
virtual NEO_WEP_BITS_UNDERLYING_TYPE GetNeoWepBits(void) const OVERRIDE { return NEO_WEP_M41_S | NEO_WEP_SUPPRESSED | NEO_WEP_FIREARM; }
virtual NEO_WEP_BITS_UNDERLYING_TYPE GetNeoWepBits(void) const OVERRIDE { return NEO_WEP_M41_S | NEO_WEP_BATTLERIFLE | NEO_WEP_SUPPRESSED | NEO_WEP_FIREARM; }
virtual int GetNeoWepXPCost(const int neoClass) const OVERRIDE { return 0; }

virtual float GetSpeedScale(void) const OVERRIDE { return 0.725f; }
Expand Down
2 changes: 1 addition & 1 deletion src/game/shared/neo/weapons/weapon_milso.h
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ class CWeaponMilso : public CNEOBaseCombatWeapon
CWeaponMilso();

NEO_WEP_BITS_UNDERLYING_TYPE WeaponIndex() const override { return NEO_WIDX_MILSO; }
virtual NEO_WEP_BITS_UNDERLYING_TYPE GetNeoWepBits(void) const override { return NEO_WEP_MILSO | NEO_WEP_SUPPRESSED | NEO_WEP_FIREARM; }
virtual NEO_WEP_BITS_UNDERLYING_TYPE GetNeoWepBits(void) const override { return NEO_WEP_MILSO | NEO_WEP_PISTOL | NEO_WEP_SUPPRESSED | NEO_WEP_FIREARM; }
virtual int GetNeoWepXPCost(const int neoClass) const override { return 0; }

virtual float GetSpeedScale(void) const OVERRIDE { return 0.85f; }
Expand Down
2 changes: 1 addition & 1 deletion src/game/shared/neo/weapons/weapon_mpn.h
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ class CWeaponMPN : public CNEOBaseCombatWeapon
CWeaponMPN();

NEO_WEP_BITS_UNDERLYING_TYPE WeaponIndex() const override { return NEO_WIDX_MPN; }
virtual NEO_WEP_BITS_UNDERLYING_TYPE GetNeoWepBits(void) const OVERRIDE { return NEO_WEP_MPN | NEO_WEP_FIREARM; }
virtual NEO_WEP_BITS_UNDERLYING_TYPE GetNeoWepBits(void) const OVERRIDE { return NEO_WEP_MPN | NEO_WEP_SMG | NEO_WEP_FIREARM; }
virtual int GetNeoWepXPCost(const int neoClass) const OVERRIDE { return 0; }

virtual float GetSpeedScale(void) const OVERRIDE { return 0.85f; }
Expand Down
2 changes: 1 addition & 1 deletion src/game/shared/neo/weapons/weapon_mpns.h
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ class CWeaponMPN_S : public CNEOBaseCombatWeapon
CWeaponMPN_S();

NEO_WEP_BITS_UNDERLYING_TYPE WeaponIndex() const override { return NEO_WIDX_MPN_S; }
virtual NEO_WEP_BITS_UNDERLYING_TYPE GetNeoWepBits(void) const override { return NEO_WEP_MPN_S | NEO_WEP_SUPPRESSED | NEO_WEP_FIREARM; }
virtual NEO_WEP_BITS_UNDERLYING_TYPE GetNeoWepBits(void) const override { return NEO_WEP_MPN_S | NEO_WEP_SMG | NEO_WEP_SUPPRESSED | NEO_WEP_FIREARM; }
virtual int GetNeoWepXPCost(const int neoClass) const override { return 0; }

virtual float GetSpeedScale(void) const OVERRIDE { return 0.85f; }
Expand Down
2 changes: 1 addition & 1 deletion src/game/shared/neo/weapons/weapon_srm.h
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ class CWeaponSRM : public CNEOBaseCombatWeapon
CWeaponSRM();

NEO_WEP_BITS_UNDERLYING_TYPE WeaponIndex() const override { return NEO_WIDX_SRM; }
virtual NEO_WEP_BITS_UNDERLYING_TYPE GetNeoWepBits(void) const override { return NEO_WEP_SRM | NEO_WEP_FIREARM; }
virtual NEO_WEP_BITS_UNDERLYING_TYPE GetNeoWepBits(void) const override { return NEO_WEP_SRM | NEO_WEP_SMG | NEO_WEP_FIREARM; }
virtual int GetNeoWepXPCost(const int neoClass) const override { return 0; }

virtual float GetSpeedScale(void) const OVERRIDE { return 0.85f; }
Expand Down
2 changes: 1 addition & 1 deletion src/game/shared/neo/weapons/weapon_srms.h
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ class CWeaponSRM_S : public CNEOBaseCombatWeapon
CWeaponSRM_S();

NEO_WEP_BITS_UNDERLYING_TYPE WeaponIndex() const override { return NEO_WIDX_SRM_S; }
virtual NEO_WEP_BITS_UNDERLYING_TYPE GetNeoWepBits(void) const override { return NEO_WEP_SRM_S | NEO_WEP_SUPPRESSED | NEO_WEP_FIREARM; }
virtual NEO_WEP_BITS_UNDERLYING_TYPE GetNeoWepBits(void) const override { return NEO_WEP_SRM_S | NEO_WEP_SMG | NEO_WEP_SUPPRESSED | NEO_WEP_FIREARM; }
virtual int GetNeoWepXPCost(const int neoClass) const override { return 0; }

virtual float GetSpeedScale(void) const OVERRIDE { return 0.85f; }
Expand Down
2 changes: 1 addition & 1 deletion src/game/shared/neo/weapons/weapon_supa7.h
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ class CWeaponSupa7 : public CNEOBaseCombatWeapon
CWeaponSupa7();

NEO_WEP_BITS_UNDERLYING_TYPE WeaponIndex() const override { return NEO_WIDX_SUPA7; }
virtual NEO_WEP_BITS_UNDERLYING_TYPE GetNeoWepBits(void) const OVERRIDE { return NEO_WEP_SUPA7 | NEO_WEP_FIREARM; }
virtual NEO_WEP_BITS_UNDERLYING_TYPE GetNeoWepBits(void) const OVERRIDE { return NEO_WEP_SUPA7 | NEO_WEP_SHOTGUN | NEO_WEP_FIREARM; }
virtual int GetNeoWepXPCost(const int neoClass) const OVERRIDE { return 0; }

virtual float GetSpeedScale(void) const OVERRIDE { return 0.7f; }
Expand Down
2 changes: 1 addition & 1 deletion src/game/shared/neo/weapons/weapon_tachi.h
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ class CWeaponTachi : public CNEOBaseCombatWeapon
bool bPlaySound = false, float flSoonestSwitch = 0.0f );

NEO_WEP_BITS_UNDERLYING_TYPE WeaponIndex() const override { return NEO_WIDX_TACHI; }
virtual NEO_WEP_BITS_UNDERLYING_TYPE GetNeoWepBits(void) const override { return NEO_WEP_TACHI | NEO_WEP_FIREARM; }
virtual NEO_WEP_BITS_UNDERLYING_TYPE GetNeoWepBits(void) const override { return NEO_WEP_TACHI | NEO_WEP_PISTOL | NEO_WEP_FIREARM; }
virtual int GetNeoWepXPCost(const int neoClass) const override { return 0; }

virtual float GetSpeedScale(void) const OVERRIDE { return 0.85f; }
Expand Down