Well in that case I think I got it right.
Here is plugin prerelease for testing. This is version2, I got simple fix that works perfectly but can be a bit inefficient in multiplayer as it runs too often, so I was trying to patch it assembler which should be many times faster. But its always a bit risky and can cause crashes. If something like that happen let me know.
To get current speed you can use this code in OnChat event:
if(sMessage == "testspeed")
{
SetLocalString(oPC,"NWNX!PATCH!GetMovementRateFactor","...........................");
string sSpeed = GetLocalString(oPC,"NWNX!PATCH!GetMovementRateFactor");
DeleteLocalString(oPC,"NWNX!PATCH!GetMovementRateFactor");
SendMessageToPC(oPC,"speed: "+sSpeed);
}
Expeditious: yes, I was using haste item not haste spell and haste from item stacks.