Extez1 Опубликовано 21 апреля, 2012 Жалоба Поделиться Опубликовано 21 апреля, 2012 (изменено) Новый фикс убил просто, рефлект не превышает макс хп чара. Вернул рефлект картам и прочему, но на нитку по прежнему идёт макс хп чара.Сколько не копаюсь в сорцах в нитке, ни где не могу найти fix dmg на нитке.Сталкивался кто?p.s. reflect_damage_fix я поправил, но на нитку не пашет.Чтоб меньше вопросов было char_n(max_hp=300k) на нитке палом. По char_n бьют азуру = 999к, то палу рефлектит max_hp. Изменено 21 апреля, 2012 пользователем Extez1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Карласон Опубликовано 21 апреля, 2012 Жалоба Поделиться Опубликовано 21 апреля, 2012 рефлект не превышает макс хп чараЭТО КАК??? Ссылка на комментарий Поделиться на другие сайты Поделиться
Extez1 Опубликовано 21 апреля, 2012 Автор Жалоба Поделиться Опубликовано 21 апреля, 2012 рефлект не превышает макс хп чараЭТО КАК???int battle_calc_return_damage******************************max_damage = status_get_max_hp(bl); // меняем на INT_MAX получаем нормальный рефлект от (карт,шмота,рефлектшилд). Но на нитку по прежнему не пашет, всё так же максимальный урон идёт max_hp чара который на нитке(допустем вместо 999к) Ссылка на комментарий Поделиться на другие сайты Поделиться
Incubus Опубликовано 21 апреля, 2012 Жалоба Поделиться Опубликовано 21 апреля, 2012 Мб if( rdamage > max_damage ) rdamage = max_damage; Ссылка на комментарий Поделиться на другие сайты Поделиться
Extez1 Опубликовано 21 апреля, 2012 Автор Жалоба Поделиться Опубликовано 21 апреля, 2012 (изменено) Мб if( rdamage > max_damage ) rdamage = max_damage; Шмот нормально рефлектит. А вот нитка(devotion) не хочет. В приципе щас гляну Изменено 21 апреля, 2012 пользователем Extez1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Extez1 Опубликовано 21 апреля, 2012 Автор Жалоба Поделиться Опубликовано 21 апреля, 2012 Мб if( rdamage > max_damage ) rdamage = max_damage; Шмот нормально рефлектит. А вот нитка(devotion) не хочет. В приципе щас гляну int battle_calc_return_damage(struct block_list* bl, int damage, int flag){ struct map_session_data* sd = NULL; int rdamage = 0, max_damage; sd = BL_CAST(BL_PC, bl); if( battle_config.reflect_damage_fix&3 ) max_damage = INT_MAX; // No limit //Bounces back part of the damage. if (flag & BF_SHORT) { struct status_change* sc; if (sd && sd->short_weapon_damage_return) { rdamage += damage * sd->short_weapon_damage_return / 100; rdamage = cap_value(rdamage,1,max_damage); } sc = status_get_sc(bl); if (sc && sc->data[SC_REFLECTSHIELD]) { rdamage += damage * sc->data[SC_REFLECTSHIELD]->val2 / 100; rdamage = cap_value(rdamage,1,max_damage); } } else { if (sd && sd->long_weapon_damage_return) { rdamage += damage * sd->long_weapon_damage_return / 100; rdamage = cap_value(rdamage,1,max_damage); } } return rdamage;} Ссылка на комментарий Поделиться на другие сайты Поделиться
Incubus Опубликовано 21 апреля, 2012 Жалоба Поделиться Опубликовано 21 апреля, 2012 rdamage = cap_value(rdamage,1,max_damage);но она на прямую зависит от max_damage Ссылка на комментарий Поделиться на другие сайты Поделиться
Extez1 Опубликовано 21 апреля, 2012 Автор Жалоба Поделиться Опубликовано 21 апреля, 2012 rdamage = cap_value(rdamage,1,max_damage);но она на прямую зависит от max_damageВ том и прикол, сначало вальки и всё проочее рефлектило max_hp чара. убрал ограничение по HP сразу норм заработало, но нитка не хочет. Ковырялся в нитке, ни чё не нашёл. if( hp && !(flag&1) ) { if( sc ) { struct status_change_entry *sce; if( src && !((battle_config.reflect_damage_fix&2) && (flag&64)) && skill != PA_PRESSURE ) { // Check for Target change defenses struct block_list *d_bl; if( (sce = sc->data[SC_DEVOTION]) ) { d_bl = map_id2bl(sce->val1); if( d_bl && ( (d_bl->type == BL_MER && ((TBL_MER*)d_bl)->master && ((TBL_MER*)d_bl)->master->bl.id == target->id) || (d_bl->type == BL_PC && ((TBL_PC*)d_bl)->devotion[sce->val2] == target->id) ) && check_distance_bl(target, d_bl, sce->val3) ) { clif_damage(d_bl, d_bl, gettick(), 0, 0, hp, 0, 0, 0); status_fix_damage(NULL, d_bl, hp, 0, 0); return 0; } status_change_end(target, SC_DEVOTION, INVALID_TIMER); } } case SC_DEVOTION: { struct block_list *d_bl; struct status_change *d_sc; if( (d_bl = map_id2bl(val1)) && (d_sc = status_get_sc(d_bl)) && d_sc->count ) { // Inherits Status From Source const enum sc_type types[] = { SC_AUTOGUARD, SC_DEFENDER, SC_REFLECTSHIELD, SC_ENDURE }; enum sc_type type2; int i = (map_flag_gvg(bl->m) || map[bl->m].flag.battleground)?2:3; while( i >= 0 ) { type2 = types[i]; if( d_sc->data[type2] ) sc_start(bl, type2, 100, d_sc->data[type2]->val1, skill_get_time(status_sc2skill(type2),d_sc->data[type2]->val1)); i--; } } break; } case SC_DEVOTION: { struct block_list *d_bl = map_id2bl(sce->val1); if( d_bl ) { if( d_bl->type == BL_PC ) ((TBL_PC*)d_bl)->devotion[sce->val2] = 0; else if( d_bl->type == BL_MER ) ((TBL_MER*)d_bl)->devotion_flag = 0; clif_devotion(d_bl, NULL); } status_change_end(bl, SC_AUTOGUARD, INVALID_TIMER); status_change_end(bl, SC_DEFENDER, INVALID_TIMER); status_change_end(bl, SC_REFLECTSHIELD, INVALID_TIMER); status_change_end(bl, SC_ENDURE, INVALID_TIMER); } break; Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения