I think GMMove makes them warp/gate to whatever location you use. Unfortuantely, due to how combat works, you can't really make an NPC walk to another location during combat without using a few tricks.
You could set the special attacks to H so it won't aggro and then wipe the hate list both using quest objects. Then, it should be able to walk to another location, but you will also want to set it to save its guard point.
Before the move, you probably have to do something like this:
Code:
$npc->NPCSpecialAttacks("H", 0);
$npc->WipeHateList();
Then, the move:
Code:
$npc->MoveTo(-324, 778, -10, 128, 1);
And after it gets to the destination, you would turn aggro back on like this:
Code:
$npc->NPCSpecialAttacks("H", 0, 0 1);
But, the NPC would not be attacking the whole time it is moving. If you wanted it to attack while walking, you would need to simulate it using Damage() or something on a timer.
I don't know the details of exactly what you are wanting to do, but it is probably not going to be as simple as you may have expected.
Also, I don't know why you are setting $combat_state to 1 in EVENT_COMBAT. That is not how it works. You would do something more like this:
Code:
if ($combat_state)
{
quest::shout("How dare you attack me, $name! You shall die for your heresy!");
}