I asked our lord and savior (ChatGPT) and surprisingly it had an answer for me. I had to add animation to the turret_damage.md3 model because apparently the game freaks out if a model is moving and it doesn't have animation. So I just added 2 frames marked down in blender using SomaZ's plugin, and the message has disappeared.
Now the turrets move exactly like in Outcast! Their aim is a little off compared to Outcast, but its sufficient.
NPCs still had a tendency to switch to fast, albeit very briefly, if you were a staff user and they were a staff user, with the above fixes. As well, for whatever reason, the rebornmasterstaff NPC was still completely afflicted, he was the only one.
But, the solutions are fairly simple that I found.
In NPC_reactions, switch the ordering of the if statements and connect their execution through else if, like so:
if (self->client->ps.saber[0].type == SABER_STAFF)
{
self->client->ps.saberAnimLevel = SS_STAFF;
}
else if (self->client->ps.saberStylesKnown & (1 << SS_FAST))
{
self->client->ps.saberAnimLevel = SS_FAST;//next attack must be a quick attack
}
And in AI_Jedi, add this if statement after the client check in Jedi_AdjustSaberAnim, to perform an immediate check and return if they have the staff saber type:
if (self->client->ps.saber[0].type == SABER_STAFF)
{
self->client->ps.saberAnimLevel = SS_STAFF;
return;
}
Now having tested all the base given NPCs (and JK2 ones), I can safely say the glitch does not rear its head anymore, with any NPC. That is with the base NPCs though, so I'm not entirely sure how custom created NPCs fair, but I feel as long as they use _humanoid animations its very likely they'll be ok too.