//Attempts to set a mob.
int pc_set_hate_mob(struct map_session_data *sd, int pos, struct block_list *bl)
{
    int class_;
    if (!sd || !bl || pos < 0 || pos > 2)
        return 0;
    if (sd->hate_mob[pos] != -1)
    {    //Can't change hate targets.
        clif_hate_info(sd, pos, sd->hate_mob[pos], 0); //Display current
        return 0;
    }

    class_ = status_get_class(bl);
    if (!pcdb_checkid(class_)) {
        unsigned int max_hp = status_get_max_hp(bl);
        if ((pos == 1 && max_hp < 6000) || (pos == 2 && max_hp < 20000))
            return 0;
        if (pos != status_get_size(bl))
            return 0; //Wrong size
    }
    sd->hate_mob[pos] = class_;
    pc_setglobalreg(sd,hate_var[pos],class_+1);
    clif_hate_info(sd, pos, class_, 1);
    return 1;
}Заменить на это:

Код:
//Attempts to set a mob.
int pc_set_hate_mob(struct map_session_data *sd, int pos, struct block_list *bl)
{
    int class_;
    if (!sd || !bl || pos < 0 || pos > 2)
        return 0;
    if (sd->hate_mob[pos] != -1)

    class_ = status_get_class(bl);
    if (!pcdb_checkid(class_)) {
        unsigned int max_hp = status_get_max_hp(bl);
        if ((pos == 1 && max_hp < 6000) || (pos == 2 && max_hp < 20000))
            return 0;
    }
    sd->hate_mob[pos] = class_;
    pc_setglobalreg(sd,sg_info[pos].hate_var,class_+1);
    clif_hate_info(sd, pos, class_, 1);
    return 1;
}Примечание:Код на афине у меня выдавал ошибки.Пришлось почитать коменты в коде и убрать ограничения