func int B_TeachFightTalentPercent(var C_Npc slf,var C_Npc oth,var int talent,var int percent,var int teacherMAX)
{
    ...
    cost = B_GetTalentTrainCost(oth,talent,percent);
    // Изучается навык владения одноручным оружием.
    if(talent == NPC_TALENT_1H)
    {
        // Значение силы не соответствует изучаемому уровню навыка -> вывод сообщения, выход.
        if(sPerm_Attr_KTS_Hero_1H_STR(percent) == false)
        {
            B_PrintPlayerMiddle(oth,"Не хватает силы для дальнейшего обучения");
            B_Say(slf,oth,"$NOLEARNNOPOINTS");
            return FALSE;
        };
        // Значение ловкости не соответствует изучаемому уровню навыка -> вывод сообщения, выход.
        if(sPerm_Attr_KTS_Hero_1H_DEX(percent) == false)
        {
            B_PrintPlayerMiddle(oth,"Не хватает ловкости для дальнейшего обучения");
            B_Say(slf,oth,"$NOLEARNNOPOINTS");
            return FALSE;
        };
    };
    if(talent == NPC_TALENT_2H)
    {
        if(sPerm_Attr_KTS_Hero_2H_STR(percent) == false)
        {
            B_PrintPlayerMiddle(oth,"Не хватает силы для дальнейшего обучения");
            B_Say(slf,oth,"$NOLEARNNOPOINTS");
            return FALSE;
        };
        if(sPerm_Attr_KTS_Hero_2H_DEX(percent) == false)
        {
            B_PrintPlayerMiddle(oth,"Не хватает ловкости для дальнейшего обучения");
            B_Say(slf,oth,"$NOLEARNNOPOINTS");
            return FALSE;
        };
    };
    if(talent == NPC_TALENT_BOW)
    {
        if(sPerm_Attr_KTS_Hero_BOW_DEX(percent) == false)
        {
            B_PrintPlayerMiddle(oth,"Не хватает ловкости для дальнейшего обучения");
            B_Say(slf,oth,"$NOLEARNNOPOINTS");
            return FALSE;
        };
        if(sPerm_Attr_KTS_Hero_BOW_STR(percent) == false)
        {
            B_PrintPlayerMiddle(oth,"Не хватает силы для дальнейшего обучения");
            B_Say(slf,oth,"$NOLEARNNOPOINTS");
            return FALSE;
        };
    };
    if(talent == NPC_TALENT_CROSSBOW)
    {
        if(sPerm_Attr_KTS_Hero_CROSSBOW_STR(percent) == false)
        {
            B_PrintPlayerMiddle(oth,"Не хватает силы для дальнейшего обучения");
            B_Say(slf,oth,"$NOLEARNNOPOINTS");
            return FALSE;
        };
        if(sPerm_Attr_KTS_Hero_CROSSBOW_DEX(percent) == false)
        {
            B_PrintPlayerMiddle(oth,"Не хватает ловкости для дальнейшего обучения");
            B_Say(slf,oth,"$NOLEARNNOPOINTS");
            return FALSE;
        };
    };
    if(oth.lp < cost)
    ...