Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- if(cr.Stat[ST_BODY_TYPE]==BT_ROOTS)
- {
- //killer.AddScore(SCORE_ROOTS,1); // Добавляем фраг убийце;
- int ratio = 1; // Начальный коэффициент;
- int rank_ratio = 1; // Коэффициент звания;
- int level_ratio = 1; // Коэффициент уровня;
- int killer_level = killer.Stat[ST_LEVEL]; // Узнали уровень убийцы;
- int target_life = cr.Stat[ST_MAX_LIFE]/2; // Получаем макс. количество ХП жертвы и делим на 2;
- int target_frags = cr.Kill[282]+cr.Kill[283]; // Выясняем сколько фрагов у жертвы;
- int target_level = cr.Stat[ST_LEVEL]; // Узнали уровень жертвы;
- int target_rank = GetLocalVar(LVAR_root_rank, cr.Id).GetValue(); // Звание жертвы;
- if (killer.Trait[TRAIT_LIBERTY]!=0)
- {
- int killer_rank = GetLocalVar(LVAR_liberty_rank, killer.Id).GetValue(); // Если Либерти, то узнает о его звании;
- int rank_gap = killer_rank - target_rank; // Вычисляем разницу в званиях;
- if (rank_gap>=2) rank_ratio=3; // Если жертва выше званием;
- if (rank_gap<=-2) rank_ratio=1; // Если жертва ниже званием;
- if (rank_gap==0) rank_ratio=2; // Одинаковое звание;
- if (rank_gap==1) rank_ratio=1; // Киллер на одно звание выше;
- if (rank_gap==-1) rank_ratio=3; // Киллер на одно звание ниже;
- }
- if (killer.Trait[ETERNALS]!=0)
- {
- int killer_rank = GetLocalVar(LVAR_eternals_rank, killer.Id).GetValue(); // Если Этернал, то узнает о его звании;
- int rank_gap = killer_rank - target_rank; // Вычисляем разницу в званиях;
- if (rank_gap>=2) rank_ratio=3; // Если жертва выше званием;
- if (rank_gap<=-2) rank_ratio=1; // Если жертва ниже званием;
- if (rank_gap==0) rank_ratio=2; // Одинаковое звание;
- if (rank_gap==1) rank_ratio=1; // Киллер на одно звание выше;
- if (rank_gap==-1) rank_ratio=3; // Киллер на одно звание ниже;
- }
- level_gap = killer.StatBase[ST_LEVEL]-cr.StatBase[ST_LEVEL]; // Уровень киллера - Уровень жертвы. 20-5=15, 5-20=-15, 20-12=8, 8-15=-7
- if (level_gap < 9 || level_gap > -8) // Если жертва не меньше на 8 уровней и не больше на 7 уровней;
- {
- killer.AddScore(SCORE_ROOTS,1); // То даем фраг;
- }
- if (level_gap==0) level_ratio = 2;
- if (level_gap>0) level_ratio = 1;
- if (level_gap<0 || level_gap >-5) level_ratio = 2;
- if (level_gap<-4 || level_gap >-10) level_ratio = 3;
- ratio = level_ratio+rank_ratio; // Складываем коэффициенты в один;
- int result = ratio*(target_level+target_life) + target_frags; // Получаемый опыт = коэф*(ур. жертвы + хп/2 жертвы) + фраги жертвы.
- killer.StatBase[ST_EXPERIENCE]+=result;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement