У нас не работает, вроде как реньювал клиенты РОшки, после 99 уровня СНа вообще перестают отсылать пакет на сервер. Крит-мод точно нельзя после 99 призвать (99 сн все девятки в окошке экспы)
Икс на вопрос почему не работает, ответил вот этой ссылкой: https://github.com/rathena/rathena/issues/3148 Там тикет закрыли фразой, что это был баг Аегиса. если смотреть код еФины, то оно в принципе не будет работать Код: void clif_parse_NoviceExplosionSpirits(int fd, struct map_session_data *sd) { if( ( sd->class_&MAPID_UPPERMASK ) == MAPID_SUPER_NOVICE ) { unsigned int next = pc_nextbaseexp(sd); if( next ) { int percent = (int)( ( (float)sd->status.base_exp/(float)next )*1000. ); if( percent && ( percent%100 ) == 0 ) {// 10.0%, 20.0%, ..., 90.0% sc_start(&sd->bl, status_skill2sc(MO_EXPLOSIONSPIRITS), 100, 17, skill_get_time(MO_EXPLOSIONSPIRITS, 5)); //Lv17-> +50 critical (noted by Poki) [Skotlex] clif_skill_nodamage(&sd->bl, &sd->bl, MO_EXPLOSIONSPIRITS, 5, 1); // prayer always shows successful Lv5 cast and disregards noskill restrictions } } } } unsigned int pc_nextbaseexp(struct map_session_data *sd) { nullpo_ret(sd); if(sd->status.base_level>=pc_maxbaselv(sd) || sd->status.base_level<=0) return 0; return exp_table[pc_class2idx(sd->status.class_)][0][sd->status.base_level-1]; } рАфина пытается, но похоже все заканчивается на том тикете, который закрыли Код: void clif_parse_NoviceExplosionSpirits(int fd, struct map_session_data *sd) { if( (sd->class_&MAPID_UPPERMASK) == MAPID_SUPER_NOVICE ) { t_exp next = pc_nextbaseexp(sd); if( next ) { int percent = (int)( ( (double)sd->status.base_exp/(double)next )*1000. ); if( percent && ( percent%100 ) == 0 ) {// 10.0%, 20.0%, ..., 90.0% sc_start(&sd->bl,&sd->bl, status_skill2sc(MO_EXPLOSIONSPIRITS), 100, 17, skill_get_time(MO_EXPLOSIONSPIRITS, 5)); //Lv17-> +50 critical (noted by Poki) [Skotlex] clif_skill_nodamage(&sd->bl, &sd->bl, MO_EXPLOSIONSPIRITS, 5, 1); // prayer always shows successful Lv5 cast and disregards noskill restrictions } } } } t_exp pc_nextbaseexp(struct map_session_data *sd){ nullpo_ret(sd); if (sd->status.base_level == 0) // Is this something that possible? return 0; if (pc_is_maxbaselv(sd)) return MAX_LEVEL_BASE_EXP; // On max level, player's base EXP limit is 99,999,999 return job_info[pc_class2idx(sd->status.class_)].exp_table[0][sd->status.base_level-1]; }