По поводу ZS_Practice_Magic, рассмотрим подробнее...
func void ZS_Practice_Magic()
{
	Perception_Set_Normal();
	B_ResetAll(self);
	AI_SetWalkMode(self,NPC_WALK);
	if(Npc_GetDistToWP(self,self.wp) >TA_DIST_SELFWP_MAX)
	{
		AI_GotoWP(self,self.wp);
	};
};
func int ZS_Practice_Magic_Loop()
{
	var int zufall;
	\\ 1 условие
	if(Npc_IsOnFP(self,"STAND")) \\Если НПЦ стоит на фрипоинте STAND
	{
		AI_AlignToFP(self);
		if(self.aivar[AIV_TAPOSITION] == NOTINPOS_WALK)
		{
			self.aivar[AIV_TAPOSITION] = NOTINPOS;
		};
	}
	\\ 2 условие
	else if(Wld_IsFPAvailable(self,"STAND")) \\Иначе, если доступен (свободен) фрипоинт STAND
	{
		AI_GotoFP(self,"STAND");
		AI_Standup(self);
		AI_AlignToFP(self);
		self.aivar[AIV_TAPOSITION] = NOTINPOS_WALK;
	}
	\\ 3 условие
	else \\Иначе выровняться по вейпоинту.
	{
		AI_AlignToWP(self);
		if(self.aivar[AIV_TAPOSITION] == NOTINPOS_WALK)
		{
			self.aivar[AIV_TAPOSITION] = NOTINPOS;
		};
	};
	if((Npc_GetStateTime(self) >7) && (self.aivar[AIV_TAPOSITION] == NOTINPOS)) \\Собсно скрипт анимации начинают воспроизводиться, если эти два условия выполнены.
	{
		zufall = Hlp_Random(100);
		if(zufall <= 25)
		{
			AI_PlayAni(self,"T_PRACTICEMAGIC");
		}
		else if(zufall <= 50)
		{
			AI_PlayAni(self,"T_PRACTICEMAGIC2");
		}
		else if(zufall <= 70)
		{
			AI_PlayAni(self,"T_PRACTICEMAGIC3");
		}
		else if(zufall <= 90)
		{
			AI_PlayAni(self,"T_PRACTICEMAGIC4");
		}
		else
		{
			AI_PlayAni(self,"R_SCRATCHHEAD");
		};
		Npc_SetStateTime(self,0);
	};
	return LOOP_CONTINUE;
};
func void ZS_Practice_Magic_End()
{
};
Собсно, отсюда видно, что анимация начнет работать, только тогда, когда self.aivar[AIV_TAPOSITION] == NOTINPOS и (Npc_GetStateTime(self) >7.
С Npc_GetStateTime(self) >7 проблем быть не должно, а вот с self.aivar[AIV_TAPOSITION] == NOTINPOS может быть некоторый геморой.
self.aivar[AIV_TAPOSITION] == NOTINPOS, может установиться только в 1 и 3 условии, если уже self.aivar[AIV_TAPOSITION] == NOTINPOS_WALK
В то же время self.aivar[AIV_TAPOSITION] = NOTINPOS_WALK может установиться только во 2 условии, т.е. если для НПЦ доступен фрипоинт STAND
Отсюда следует, если НПЦ не будет доступен фрипоинт STAND, AIV_TAPOSITION не установиться в NOTINPOS_WALK и далее в NOTINPOS. Значит делаем вывод, что НПЦ не может получить доступ к фрипоинту.
Можно либо добавить в спейсере нужные фрипоинты, либо в скриптах упростить условия.