Спасибо Зоро, за вырезку с симкарфта.
Код:
[spoiler=Rage_Warrior_gaine]// trigger_rage_gain ================================================== ======

static void trigger_rage_gain( attack_t* a, double rage_conversion_value )
{
// Basic Formula: http://forums.worldofwarcraft.com/th...sid=1&pageNo=1
// Blue Clarification: http://forums.worldofwarcraft.com/th...&pageNo=13#250

warrior_t* p = a -> player -> cast_warrior();
weapon_t* w = a -> weapon;

double hit_factor = 3.5;
if ( a -> result == RESULT_CRIT ) hit_factor *= 2.0;
if ( w -> slot == SLOT_OFF_HAND ) hit_factor /= 2.0;

double rage_from_damage = 7.5 * a -> direct_dmg / rage_conversion_value;
double rage_from_hit = w -> swing_time * hit_factor;

double rage_gain_avg = ( rage_from_damage + rage_from_hit ) / 2.0;
double rage_gain_max = 15 * a -> direct_dmg / rage_conversion_value;

double rage_gain = std::min( rage_gain_avg, rage_gain_max );

if ( p -> talents.endless_rage ) rage_gain *= 1.25;

p -> resource_gain( RESOURCE_RAGE, rage_gain, w -> slot == SLOT_OFF_HAND ? p -> gains_oh_attack : p -> gains_mh_attack );
}
Пока напоминает формулу с вовики, только всё же пару нюансов видно сразу.. Ну и это конечно формула не нашего серва.. И остался еще вопрос, что это за *a. Разберусь...