Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There are three different ways CTFPlayerShared::OnAddSodaPopperHype can be called:
1: ItemPostFrame() calls SecondaryAttack(), which adds the cond
2: ItemBusyFrame() calls SecondaryAttack(), which adds the cond
3: The server adds the condition manually
We really only want the sound to play in cases 1 and 2. Guarding against case 3 is easy since m_bSyncingConditions will be true.
The current issue is that ItemPostFrame() and ItemBusyFrame() are called during client prediction. Normally you can just check IsFirstTimePredicted(), but for some reason, this is always false when the function is called from ItemBusyFrame(). Worse yet, m_bSyncingConditions is true in that case.
At this point, the sound will never fire twice, but it will get skipped when this function is called from ItemBusyFrame() (when the player activates hype while their scattergun is reloading)
Description