I suggest changing the reload logic in the engine slightly. This will allow you to get rid of the ugly weapon:switch_state(2) or the code that counts ammo and then returns it. Well, I have already done it for myself. My approach is not perfect, a better option would be to add a line to the weapon section indicating whether it is magazined, and based on that, decide whether to disable the default reload logic or not. Anyway, unfortunately, I don't have time for testing, etc., so if you do, why haven't you done this?
I suggest changing the reload logic in the engine slightly. This will allow you to get rid of the ugly weapon:switch_state(2) or the code that counts ammo and then returns it. Well, I have already done it for myself. My approach is not perfect, a better option would be to add a line to the weapon section indicating whether it is magazined, and based on that, decide whether to disable the default reload logic or not. Anyway, unfortunately, I don't have time for testing, etc., so if you do, why haven't you done this?