@@ -137,59 +137,70 @@ void CWeaponBALC::PrimaryAttack(void)
137137 }
138138
139139 auto pPlayer = ToNEOPlayer (GetOwner ());
140- if (!pPlayer)
141- {
142- Assert (false );
143- return ;
144- }
140+ ShootGrenade (pPlayer);
141+ }
142+ }
145143
146- if ((gpGlobals->curtime - m_flLastAttackTime) > 0 .5f )
147- {
148- m_nNumShotsFired = 0 ;
149- }
150- else
151- {
152- ++m_nNumShotsFired;
153- }
154- m_flLastAttackTime = gpGlobals->curtime ;
144+ void CWeaponBALC::ShootGrenade (CNEO_Player *pPlayer)
145+ {
146+ if (!pPlayer)
147+ {
148+ Assert (false );
149+ return ;
150+ }
155151
156- SendWeaponAnim (GetPrimaryAttackActivity ());
157- SetWeaponIdleTime (gpGlobals->curtime + 2.0 );
158- pPlayer->DoAnimationEvent (PLAYERANIMEVENT_ATTACK_PRIMARY);
152+ if ((gpGlobals->curtime - m_flLastAttackTime) > 0 .5f )
153+ {
154+ m_nNumShotsFired = 0 ;
155+ }
156+ else
157+ {
158+ ++m_nNumShotsFired;
159+ }
160+ m_flLastAttackTime = gpGlobals->curtime ;
159161
160- WeaponSound (BURST);
162+ SendWeaponAnim (GetPrimaryAttackActivity ());
163+ SetWeaponIdleTime (gpGlobals->curtime + 2.0 );
164+ pPlayer->DoAnimationEvent (PLAYERANIMEVENT_ATTACK_PRIMARY);
165+
166+ WeaponSound (BURST);
161167
162168#ifdef GAME_DLL
163- const Vector vecSrc = pPlayer->Weapon_ShootPosition ();
164- Vector vecThrow;
169+ const Vector vecSrc = pPlayer->Weapon_ShootPosition ();
170+ Vector vecThrow;
165171
166- AngleVectors (pPlayer->EyeAngles () + pPlayer->GetPunchAngle (), &vecThrow);
167- VectorScale (vecThrow, 2000 .0f , vecThrow);
172+ AngleVectors (pPlayer->EyeAngles () + pPlayer->GetPunchAngle (), &vecThrow);
173+ VectorScale (vecThrow, 2000 .0f , vecThrow);
168174
169- QAngle angles;
170- VectorAngles (vecThrow, angles);
171- CGrenadeAR2 *pGrenade = assert_cast<CGrenadeAR2*>(Create (" grenade_ar2" , vecSrc, angles, pPlayer));
172- pGrenade->SetAbsVelocity (vecThrow);
175+ QAngle angles;
176+ VectorAngles (vecThrow, angles);
177+ CGrenadeAR2 *pGrenade = assert_cast<CGrenadeAR2 *>(Create (" grenade_ar2" , vecSrc, angles, pPlayer));
178+ pGrenade->SetAbsVelocity (vecThrow);
173179
174- pGrenade->SetLocalAngularVelocity (RandomAngle (-400 , 400 ));
175- pGrenade->SetMoveType (MOVETYPE_FLYGRAVITY, MOVECOLLIDE_FLY_BOUNCE);
176- pGrenade->SetThrower (GetOwner ());
177- pGrenade->SetDamage (BALC_CHARGE_SHOT_DAMAGE);
180+ pGrenade->SetLocalAngularVelocity (RandomAngle (-400 , 400 ));
181+ pGrenade->SetMoveType (MOVETYPE_FLYGRAVITY, MOVECOLLIDE_FLY_BOUNCE);
182+ pGrenade->SetThrower (GetOwner ());
183+ pGrenade->SetDamage (BALC_CHARGE_SHOT_DAMAGE);
178184
179- CSoundEnt::InsertSound (SOUND_COMBAT, GetAbsOrigin (), 1000 , 0.2 , GetOwner (), SOUNDENT_CHANNEL_WEAPON);
185+ CSoundEnt::InsertSound (SOUND_COMBAT, GetAbsOrigin (), 1000 , 0.2 , GetOwner (), SOUNDENT_CHANNEL_WEAPON);
186+ pPlayer->OnMyWeaponFired (this ); // to update GetTimeSinceWeaponFired
180187#endif
181- const int iAmmoCost = int ((GetDefaultClip1 () + 10 ) / BALC_CHARGE_SHOT_MAX);
182- m_iPrimaryAmmoCount = Max (0 , m_iPrimaryAmmoCount - iAmmoCost);
188+ const int iAmmoCost = int ((GetDefaultClip1 () + 10 ) / BALC_CHARGE_SHOT_MAX);
189+ m_iPrimaryAmmoCount = Max (0 , m_iPrimaryAmmoCount - iAmmoCost);
183190
184- m_flNextPrimaryAttack = m_flNextPrimaryAttack + BALC_CHARGE_SHOT_RATE;
191+ m_flNextPrimaryAttack = gpGlobals-> curtime + BALC_CHARGE_SHOT_RATE;
185192
186- m_bCharging = false ;
187- m_bCharged = false ;
193+ m_bCharging = false ;
194+ m_bCharged = false ;
188195
189- // View kick
190- pPlayer->ViewPunchReset ();
191- AddViewKick ();
192- }
196+ // View kick
197+ pPlayer->ViewPunchReset ();
198+ AddViewKick ();
199+ }
200+
201+ float CWeaponBALC::GetChargeDuration () const
202+ {
203+ return BALC_CHARGE_DURATION;
193204}
194205
195206void CWeaponBALC::SecondaryAttack (void )
0 commit comments