Последний раз редактировалось Зороастр; 04.03.2014 в 21:19.
Оригинальные профили на форуме - Зороастр и Зоро. Остальные похожие профили являются плагиатом.
Сравним http://www.wowwiki.com/Rage
(7.5 * d/c + f*s) / 2
(7.5*d/c + f*s)/2 или 15 d/c
d - * a -> direct_dmg; c - rage_conversion_value; f - w -> swing_time; s - hit_factor;
rage_conversion_value - постоянная которая передается в данную функцию, и её значение считается где то выше...
w -> swing_time - время замаха, что может быть, как базовая скорость пухи, так и скорость пухи в принципе...
hit_factor - прекрасно описан на воввики, что не чего добавить.
* a -> direct_dmg - а тут опять нанесенный урон или постоянный или да что угодно.. Урон ну надо думать нанесенный.
Далее Ярость = min((7.5*d/c + (f*s))/2 или 15 d/c).
Нескончаемая ярость увеличивает Ярость на 25%.
Ну и в завершении строка которая судя по всему вызывает следующую функцию, прибавляет к раге персонажа, полученную ярость....
в общем если d - большое, то формула, где 7.5, а не 15...
Тест с 1го видео
(7.5*d/c + (f*s))/2
(2754+688) дали 26 ярости
((7.5*(2754+688))/453.3) + (7*3.6))/2 = 41.07
Ладно видео свифти, видео ноунемов не любят...
1195 = 20 раги
((7.5*(1195))/453.3) + (3.5*3.6))/2 = 16.18
Ну и талант 1.25, 20.23, чтож похоже... Надо
1390 = 22
(((7.5*(1390))/453.3) + (3.5*3.6))/2)*1.25 = 22.25.
Хм, по данному видео всё гуд..
http://www.warcraftmovies.com/movieview.php?id=139257
1:03, 24 ярости за 1222.
((7.5*1222))/453.3) + (3.5*3.6))/2)*1.25 = 20.51.
1:11 25 за 1264
((7.5*1264))/453.3) + (3.5*3.6))/2)*1.25 = 20.95.
5:19 27 за 1754 крит,
((7.5*1754))/453.3) + (7*3.6))/2)*1.25 = 33.88.
5:22 23 за 2165 крит
((7.5*2165 ))/453.3) + (7*3.6))/2)*1.25 =38.14
В общем у меня полных совпадений так и не появилось...
P.S. после 5:10, не заметил ярости от абсорбов.
Сравнивая рагу по данной формуле и у нас:
6000* 0.005515 *2 = 66.18
((7.5*6000))/453.3) + (7*3.7))/2) = 62.59
Мда..
Последний раз редактировалось ciklopper; 04.03.2014 в 23:28.
Мой канал: https://www.youtube.com/c/CiklopperPlay
Есть вопросы по игровой механике, подозрение на баг? Тогда тебе сюда Мастерская.
Этот мир спасёт шаман танк!Циклоппер x300 Ршам
Зоро, если ты сюда заглядываешь. Может быть, такое, что direct_dmg - это нанесенный урон, но если он был критический, то считается, как хит? Просто странно, что при крите мы получаем другой модификатор, который еще увеличивает ярость при крите, хотя та и так увеличилась.
P.S. в 1м сообщение давал пример, как при входящем крит уроне, вар получил раги в 2 раза меньше, т.е. как от хита.
Мне заметки:
http://www.wow_head.com/forums&topic=42957/warrior-suggestions-for-wotlk
http://www.tankspot.com/showthread.p...-Warrior-Guide
http://www.tankspot.com/showthread.p...-thegreatme-ui
http://wohochka.ru/showthread.php/57...0-%D0%B2-WotLK
http://forum.molten-wow.com/showthread.php?t=242752[свернуть]
- - - Updated - - -
http://ru-mangos.ru/showthread.php?p=29898
формула по которой берется c
http://www.tankspot.com/showthread.p...K-Titan-s-GripКод:float rageconversion = float((0.0091107836 * getLevel() * getLevel()) + 3.225598133 * getLevel()) + 4.2652911f; + // Rage calculation mismatch (based on wowwiki and other pages calculation) + if(getLevel() == 80) + rageconversion = 453.3f; + if (attacker) { addRage = ((damage / rageconversion * 7.5f + weaponSpeedHitFactor) / 2.0f);
- - - Updated - - -
Еще предположения:
так, как в видео свифти у нас разногласий нет, и манекен имеет броню, но увы он не показал ни разу рагу от крита.
Предположения: рага копится именно от Normal dmg, т.е. пофиг на крит, и видать пофиг на рес.. зато, когда дру уходил в мишку и по нему шли доджи, то его огромное количество брони значительно снижало рагу. И еще разница крит не крит, отличается, только по нормализованной части раги.
Последний раз редактировалось ciklopper; 05.03.2014 в 11:44.
Мой канал: https://www.youtube.com/c/CiklopperPlay
Есть вопросы по игровой механике, подозрение на баг? Тогда тебе сюда Мастерская.
Этот мир спасёт шаман танк!Циклоппер x300 Ршам
Cthulhu, а ты не знаком с "a -> direct_dmg"? Это получается ссылка на direct_dmg, вот интересно, что такое direct_dmg..
Мой канал: https://www.youtube.com/c/CiklopperPlay
Есть вопросы по игровой механике, подозрение на баг? Тогда тебе сюда Мастерская.
Этот мир спасёт шаман танк!Циклоппер x300 Ршам
Спасибо, вот, только симкрафт у Зоро, а у меня его нет(
- - - Updated - - -
Пущу мыслю.
direct_dmg - часть которая считается, при получение раги, когда вы бьёте и когда бьют вас.
ВВидео wotlk seson 7 Awar
[свернуть]
Вар получает крит 3229, и получает 9 раги
3229 * 0.005515 = 17.807935, эм видать рага считается от обычного урона, а не критического.
Из чего можно предположить, что данный коэфициент не зависит от крита.
А судя по этому:
http://www.warcraftmovies.com/movieview.php?id=139257
1:03, 24 ярости за 1222.
((7.5*1222))/453.3) + (3.5*3.6))/2)*1.25 = 20.51.
1:11 25 за 1264
((7.5*1264))/453.3) + (3.5*3.6))/2)*1.25 = 20.95.
5:19 27 за 1754 крит,
((7.5*1754))/453.3) + (7*3.6))/2)*1.25 = 33.88.
5:22 23 за 2165 крит
((7.5*2165 ))/453.3) + (7*3.6))/2)*1.25 =38.14
Можно предположить, что рага считается от урона не снижающийся ресом, тогда будут правдо подобные цифры.
Мой канал: https://www.youtube.com/c/CiklopperPlay
Есть вопросы по игровой механике, подозрение на баг? Тогда тебе сюда Мастерская.
Этот мир спасёт шаман танк!Циклоппер x300 Ршам
Как видно было из того куска кода, a - ссылка на объект класса attack_t. Нужно всего лишь найти определение класса и посмотреть тип поля direct_dmg.
ciklopper (05.03.2014)
Из симкрафта, функция для вычисления этого action_t::direct_damage
Код:// action_t::calculate_direct_damage ========================================= double action_t::calculate_direct_damage() { direct_dmg = resisted_dmg = blocked_dmg = 0; double base_direct_dmg = sim -> range( base_dd_min, base_dd_max ); if ( base_direct_dmg == 0 ) return 0; direct_dmg = base_direct_dmg + base_dd_adder + player_dd_adder + target_dd_adder; if ( weapon_multiplier > 0 ) { // x% weapon damage + Y // e.g. Obliterate, Shred, Backstab direct_dmg += calculate_weapon_damage(); direct_dmg *= weapon_multiplier; // OH penalty if ( weapon && weapon -> slot == SLOT_OFF_HAND ) direct_dmg *= 0.5; } direct_dmg += direct_power_mod * total_power(); direct_dmg *= total_dd_multiplier(); double init_direct_dmg = direct_dmg; if ( result == RESULT_GLANCE ) { double delta_skill = ( sim -> target -> level - player -> level ) * 5.0; if ( delta_skill < 0.0 ) delta_skill = 0.0; double max_glance = 1.3 - 0.03 * delta_skill; if ( max_glance > 0.99 ) max_glance = 0.99; else if ( max_glance < 0.2 ) max_glance = 0.20; double min_glance = 1.4 - 0.05 * delta_skill; if ( min_glance > 0.91 ) min_glance = 0.91; else if ( min_glance < 0.01 ) min_glance = 0.01; if ( min_glance > max_glance ) { double temp = min_glance; min_glance = max_glance; max_glance = temp; } direct_dmg *= sim -> range( min_glance, max_glance ); // 0.75 against +3 targets. } else if ( result == RESULT_CRIT ) { direct_dmg *= 1.0 + total_crit_bonus(); } if ( ! binary ) { resisted_dmg = resistance() * direct_dmg; direct_dmg -= resisted_dmg; } if ( result == RESULT_BLOCK ) { blocked_dmg = sim -> target -> block_value; direct_dmg -= blocked_dmg; if ( direct_dmg < 0 ) direct_dmg = 0; } if ( sim -> debug ) { log_t::output( sim, "%s dmg for %s: dd=%.0f i_dd=%.0f b_dd=%.0f mod=%.2f power=%.0f b_mult=%.2f p_mult=%.2f t_mult=%.2f", player -> name(), name(), direct_dmg, init_direct_dmg, base_direct_dmg, direct_power_mod, total_power(), base_multiplier * base_dd_multiplier, player_multiplier, target_multiplier ); } return direct_dmg; }
ciklopper (05.03.2014)
гугл на симкрафт ругается 404...
Но вот еще 1на вырезка с direct_dmg
Скрытый текст
Код:// Bladestorm ============================================================== struct bladestorm_tick_t : public warrior_attack_t { bladestorm_tick_t( player_t* player ) : warrior_attack_t( "bladestorm", player, SCHOOL_PHYSICAL, TREE_ARMS, false ) { base_dd_min = base_dd_max = 1; dual = true; background = true; may_crit = true; aoe = true; direct_tick = true; } virtual void execute() { warrior_attack_t::execute(); tick_dmg = direct_dmg; update_stats( DMG_OVER_TIME ); } }; struct bladestorm_t : public warrior_attack_t { attack_t* bladestorm_tick; bladestorm_t( player_t* player, const std::string& options_str ) : warrior_attack_t( "bladestorm", player, SCHOOL_PHYSICAL, TREE_ARMS ) { warrior_t* p = player -> cast_warrior(); check_talent( p -> talents.bladestorm ); option_t options[] = { { NULL, OPT_UNKNOWN, NULL } }; parse_options( options, options_str ); aoe = true; harmful = false; base_cost = 25; num_ticks = 6; base_tick_time = 1.0; channeled = true; tick_zero = true; cooldown -> duration = 90; if ( p -> glyphs.bladestorm ) cooldown -> duration -= 15; bladestorm_tick = new bladestorm_tick_t( p ); id = 46924; } virtual void tick() { if ( sim -> debug ) log_t::output( sim, "%s ticks (%d of %d)", name(), current_tick, num_ticks ); bladestorm_tick -> weapon = &( player -> main_hand_weapon ); bladestorm_tick -> execute(); if ( bladestorm_tick -> result_is_hit() ) { if ( player -> off_hand_weapon.type != WEAPON_NONE ) { bladestorm_tick -> weapon = &( player -> off_hand_weapon ); bladestorm_tick -> execute(); } } update_time( DMG_OVER_TIME ); } // Bladestorm not modified by haste effects virtual double haste() SC_CONST { return 1.0; } }; // Heroic Strike =========================================================== struct heroic_strike_t : public warrior_attack_t { heroic_strike_t( player_t* player, const std::string& options_str ) : warrior_attack_t( "heroic_strike", player, SCHOOL_PHYSICAL, TREE_ARMS ) { warrior_t* p = player -> cast_warrior(); option_t options[] = { { NULL, OPT_UNKNOWN, NULL } }; parse_options( options, options_str ); static rank_t ranks[] = { { 76, 13, 495, 495, 0, 15 }, { 72, 12, 432, 432, 0, 15 }, { 70, 11, 317, 317, 0, 15 }, { 66, 10, 234, 234, 0, 15 }, { 60, 9, 201, 201, 0, 15 }, { 56, 8, 178, 178, 0, 15 }, { 0, 0, 0, 0, 0, 0 } }; init_rank( ranks, 47450 ); background = true; may_crit = true; base_cost -= p -> talents.improved_heroic_strike; base_crit += p -> talents.incite * 0.05; trigger_gcd = 0; weapon = &( p -> main_hand_weapon ); normalize_weapon_speed = false; if ( p -> set_bonus.tier9_4pc_melee() ) base_crit += 0.05; p -> active_heroic_strikes.push_back( this ); } virtual double cost() SC_CONST { warrior_t* p = player -> cast_warrior(); if ( p -> buffs_glyph_of_revenge -> up() ) return 0; return warrior_attack_t::cost(); } virtual void execute() { warrior_t* p = player -> cast_warrior(); warrior_attack_t::execute(); p -> buffs_glyph_of_revenge -> expire(); if( result_is_hit() ) { trigger_unbridled_wrath( this ); trigger_bloodsurge( this ); if ( result == RESULT_CRIT ) { p -> buffs_tier8_2pc_melee -> trigger(); if ( p -> glyphs.heroic_strike ) { p -> resource_gain( RESOURCE_RAGE, 10.0, p -> gains_glyph_of_heroic_strike ); } } } } }; // Bloodthirst =============================================================== struct bloodthirst_t : public warrior_attack_t { bloodthirst_t( player_t* player, const std::string& options_str ) : warrior_attack_t( "bloodthirst", player, SCHOOL_PHYSICAL, TREE_FURY ) { warrior_t* p = player -> cast_warrior(); check_talent( p -> talents.bloodthirst ); option_t options[] = { { NULL, OPT_UNKNOWN, NULL } }; parse_options( options, options_str ); weapon = &( p -> main_hand_weapon ); weapon_multiplier = 0; base_dd_min = base_dd_max = 1; may_crit = true; base_cost = 20; base_multiplier *= 1 + p -> talents.unending_fury * 0.02; direct_power_mod = 0.50; cooldown -> duration = 4.0; if ( p -> set_bonus.tier8_4pc_melee() ) base_crit += 0.10; id = 23881; } virtual void execute() { warrior_attack_t::execute(); if( result_is_hit() ) trigger_bloodsurge( this ); } }; // Concussion Blow =============================================================== struct concussion_blow_t : public warrior_attack_t { concussion_blow_t( player_t* player, const std::string& options_str ) : warrior_attack_t( "concussion_blow", player, SCHOOL_PHYSICAL, TREE_PROTECTION ) { warrior_t* p = player -> cast_warrior(); check_talent( p -> talents.concussion_blow ); option_t options[] = { { NULL, OPT_UNKNOWN, NULL } }; parse_options( options, options_str ); weapon = &( p -> main_hand_weapon ); weapon_multiplier = 0; base_dd_min = base_dd_max = 1; may_crit = true; base_cost = 15; direct_power_mod = 0.375; cooldown -> duration = 30.0; id = 12809; } };[свернуть]
Мой канал: https://www.youtube.com/c/CiklopperPlay
Есть вопросы по игровой механике, подозрение на баг? Тогда тебе сюда Мастерская.
Этот мир спасёт шаман танк!Циклоппер x300 Ршам
В модуле calculate_direct_damage, можно наблюдать замечательное описание расчета урона.. И резист, и блок и крит и всё, что душе угодно... Но, тогда как же тот факт, что вару всё равно на тот же блок... И ссылаясь на direct_damage, что мы получаем? Получаем нанесенный в цель урон или нет.. В общем спасибо конечно, это пруф, но про данный директ_дмг, надо будет добывать кучи пруфов из мувиков. ибо, не понятное поведение крита, абсорбов и блоков, симкрафт не описал.
Мой канал: https://www.youtube.com/c/CiklopperPlay
Есть вопросы по игровой механике, подозрение на баг? Тогда тебе сюда Мастерская.
Этот мир спасёт шаман танк!Циклоппер x300 Ршам
Но в функции trigger_rage_gain для вычисления получаемой ярости используется не только rage_from_damage, но и rage_from_hit, которая есть всегда, в том числе и при блоках/пари/абсорбах.
- - - Updated - - -
С другой стороны, там ограничение сверху всеравно тогда в 0 уходит... Короче, разбирайтесь дальше, я всеравно в такие методы не верю![]()
В 0.. хм это как? rage_from_hit, всегда будет и оно не самое маленькое... А вот rage_from_damage да оно тоже никогда не 0...С другой стороны, там ограничение сверху всеравно тогда в 0 уходит... Короче, разбирайтесь дальше, я всеравно в такие методы не верю
В какие методы? Мы нашли формулу, формула подтверждена, ну источников 5-6, 2 коэффициента железные, и в них всё понятно - это, hit_factor и rage_conversion_value. Еще бы swing_time бы из weapon_t* w = a -> weapon; И осталось бы понять несколько моментов, и можно делать огромный комплексный репорт на рагу, ибо формула нашего серва для раги, просто шик..Короче, разбирайтесь дальше, я всеравно в такие методы не верю
d * 0.005515 * 2
где d - нанесенный цели урон, просто супер....
Мой канал: https://www.youtube.com/c/CiklopperPlay
Есть вопросы по игровой механике, подозрение на баг? Тогда тебе сюда Мастерская.
Этот мир спасёт шаман танк!Циклоппер x300 Ршам