From what I've seen, it works a lot better than I ever thought possible! You've done many, many amazing things with this game.
Looking at your code for this, I think I might know one way to improve on it.
If I'm not mistaken, you're working with PChar attributes regardless of whether it is actually the player using the musket/musketoon, right?
So the game might get confused if there are different characters doing it at the same time.
Solution would be to make the characters use their own code without involving the player.
You should be able to extract the character ID that actually did the firing with GetEventData() if you set that up correctly.
I know I've done that in the past for things, but can't remember any examples right now.
Do you think something like that might help?
Looking at your code for this, I think I might know one way to improve on it.
If I'm not mistaken, you're working with PChar attributes regardless of whether it is actually the player using the musket/musketoon, right?
So the game might get confused if there are different characters doing it at the same time.
Solution would be to make the characters use their own code without involving the player.
You should be able to extract the character ID that actually did the firing with GetEventData() if you set that up correctly.
I know I've done that in the past for things, but can't remember any examples right now.
Do you think something like that might help?