Advertisement
Guest User

Untitled

a guest
Jun 25th, 2017
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.50 KB | None | 0 0
  1. if(cr.Stat[ST_BODY_TYPE]==BT_ROOTS)
  2.     {
  3.       //killer.AddScore(SCORE_ROOTS,1);         // Добавляем фраг убийце;
  4.       int ratio = 1;                          // Начальный коэффициент;
  5.       int rank_ratio = 1;                      // Коэффициент звания;
  6.       int level_ratio = 1;                      // Коэффициент уровня;
  7.       int killer_level = killer.Stat[ST_LEVEL];        // Узнали уровень убийцы;
  8.       int target_life = cr.Stat[ST_MAX_LIFE]/2;    // Получаем макс. количество ХП жертвы и делим на 2;
  9.       int target_frags = cr.Kill[282]+cr.Kill[283];    // Выясняем сколько фрагов у жертвы;
  10.       int target_level = cr.Stat[ST_LEVEL];        // Узнали уровень жертвы;
  11.       int target_rank = GetLocalVar(LVAR_root_rank, cr.Id).GetValue();  // Звание жертвы;
  12.      
  13.       if (killer.Trait[TRAIT_LIBERTY]!=0)
  14.       {
  15.         int killer_rank = GetLocalVar(LVAR_liberty_rank, killer.Id).GetValue(); // Если Либерти, то узнает о его звании;
  16.         int rank_gap = killer_rank - target_rank;      // Вычисляем разницу в званиях;
  17.         if (rank_gap>=2) rank_ratio=3;          // Если жертва выше званием;
  18.         if (rank_gap<=-2) rank_ratio=1;          // Если жертва ниже званием;
  19.         if (rank_gap==0) rank_ratio=2;          // Одинаковое звание;
  20.         if (rank_gap==1) rank_ratio=1;          // Киллер на одно звание выше;
  21.         if (rank_gap==-1) rank_ratio=3;          // Киллер на одно звание ниже;
  22.       }
  23.       if (killer.Trait[ETERNALS]!=0)
  24.       {
  25.         int killer_rank = GetLocalVar(LVAR_eternals_rank, killer.Id).GetValue(); // Если Этернал, то узнает о его звании;
  26.         int rank_gap = killer_rank - target_rank;      // Вычисляем разницу в званиях;
  27.         if (rank_gap>=2) rank_ratio=3;          // Если жертва выше званием;
  28.         if (rank_gap<=-2) rank_ratio=1;          // Если жертва ниже званием;
  29.         if (rank_gap==0) rank_ratio=2;          // Одинаковое звание;
  30.         if (rank_gap==1) rank_ratio=1;          // Киллер на одно звание выше;
  31.         if (rank_gap==-1) rank_ratio=3;          // Киллер на одно звание ниже;
  32.       }
  33.      
  34.       level_gap = killer.StatBase[ST_LEVEL]-cr.StatBase[ST_LEVEL]; // Уровень киллера - Уровень жертвы. 20-5=15, 5-20=-15, 20-12=8, 8-15=-7
  35.       if (level_gap < 9 || level_gap > -8)             // Если жертва не меньше на 8 уровней и не больше на 7 уровней;
  36.       {
  37.         killer.AddScore(SCORE_ROOTS,1);             // То даем фраг;
  38.       }
  39.       if (level_gap==0) level_ratio = 2;
  40.       if (level_gap>0) level_ratio = 1;
  41.       if (level_gap<0 || level_gap >-5) level_ratio = 2;
  42.       if (level_gap<-4 || level_gap >-10) level_ratio = 3;
  43.  
  44.       ratio = level_ratio+rank_ratio; // Складываем коэффициенты в один;
  45.       int result = ratio*(target_level+target_life) + target_frags; // Получаемый опыт = коэф*(ур. жертвы + хп/2 жертвы) + фраги жертвы.
  46.       killer.StatBase[ST_EXPERIENCE]+=result;
  47.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement