psprites that are set to use states from callers that are not the player's current weapon will still use the same model as that weapon. This is because functions like RenderHUDModel will always fetch model frames for the ReadyWeapon's class, rather than the caller's (which in 99.9% of cases is the ReadyWeapon anyway).
I've personally done some changes to RenderHUDModel, PreparePlayerSprites and IsHUDModelForPlayerAvailable that should fix this and I'm currently testing if anything breaks. If this turns out to be acceptable I'll open a PR for it. The main change is merely swapping
player->ReadyWeapon->GetClass()
with psp->Caller->GetClass()
in calls to FindModelFrame. It works as I'd expect, but I can't guarantee nothing will break, hence all the testing.Edit: Now, I know well that this could be simply worked around by adding those sprites to the MODELDEF of the weapon... but they would have to be added to ALL weapons to account for all potential combinations, which is honestly counter-intuitive.
PS: I've also changed IsHUDModelForPlayerAvailable so it checks for PSP_STRIFEHANDS too, mainly so those can be modelled too.