Открываем eA/src/map/pc.c и ищем это:
//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; 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; if (pos != status_get_size(bl)) return 0; //Wrong size } sd->hate_mob[pos] = class_; pc_setglobalreg(sd,sg_info[pos].hate_var,class_+1); clif_hate_info(sd, pos, class_, 1); return 1; }
2)Feeling
Открываем eA/src/map/skill.c и находим это:
case SG_FEEL: //AuronX reported you CAN memorize the same map as all three. [Skotlex] if (sd) { if(!sd->feel_map[skilllv-1].index) clif_parse_ReqFeel(sd->fd,sd, skilllv); else clif_feel_info(sd, skilllv-1, 1); } break;
Заменяем этот кусок на это:
case SG_FEEL: //AuronX reported you CAN memorize the same map as all three. [Skotlex] if (sd) { clif_parse_ReqFeel(sd->fd,sd, skilllv); } break;